home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr12 / inter35a.zip / INTERRUP.A < prev    next >
Text File  |  1993-06-05  |  296KB  |  7,719 lines

  1. Interrupt List        Release 35            Last change 6/5/93
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. ---------------------------------------------
  4. Please redistribute the following files unmodified as a group, in a pair of
  5. archives named INTER35A and INTER35B (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 14     \
  9.     INTERRUP.B    INT 15 through INT 15     \
  10.     INTERRUP.C    INT 16 through INT 21/35   \   total 1179 pages at
  11.     INTERRUP.D    INT 21/36 through INT 21/7F \  60 lines per page,
  12.     INTERRUP.E    INT 21/80 through INT 21/FF  > 1262 with INTPRINT -p
  13.     INTERRUP.F    INT 22 through INT 2F/BF    /  (5058 entries)
  14.     INTERRUP.G    INT 2F/C0 through INT 4F   /
  15.     INTERRUP.H    INT 50 through INT 66      /
  16.     INTERRUP.I    INT 67 through INT FF     /
  17.     INTERRUP.PRI    a brief introduction to interrupts
  18.     INTPRINT.COM    a simple formatter that also generates a list summary
  19.     INTPRINT.DOC    instructions for INTPRINT
  20.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  21.     MEMORY.LST    format of the BIOS data area
  22.     COMBINE.BAT    combine the piece of the list into a single file
  23. The following files should be distributed in an archive called INTER35C:
  24.     INT.COM        invoke interrupts from commandline
  25.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  26.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  27.     INT2QH.*    program to convert list into QuickHelp database
  28.     INTERVUE.EXE    indexed interrupt list browser
  29.     INTHELP.*    convert list into TurboPower GUIDE database
  30.     INTLIST.E    Epsilon extension for handling list
  31.     INTLIST.ICO    Windows icon for INTERVUE
  32.     INTPRINT.C    source code for INTPRINT
  33.     RB2NG.*        convert list into Norton Guides database
  34. ---------------------------------------------
  35. If you notice any mistakes or omissions, please let me know!  It is only with
  36. YOUR help that the list can continue to grow at the current rate.  Please send
  37. all changes to me rather than distributing a modified version of the list.
  38.  
  39. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  40. that they have already been addressed.
  41.  
  42.      Ralf Brown
  43.  
  44. Internet: ralf@telerama.pgh.pa.us
  45. UUCP: {uunet,harvard}!telerama.pgh.pa.us!ralf
  46. FIDO: Ralf Brown 1:129/26.1
  47.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  48.     unless you address it to me)
  49. CIS:  >INTERNET:ralf@telerama.pgh.pa.us
  50.  
  51. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  52. because of bad return paths.  If you don't get a response from me within a
  53. reasonable period of time, send it again with a better return path (starting at
  54. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  55. ---------------------------------------------
  56. See INTERRUP.1ST for the key to system abbreviations and a list of the
  57. trademarks mentioned here.
  58. ---------------------------------------------
  59. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  60. contained in this list to the best of my ability, but I cannot be held
  61. responsible for any problems caused by use or misuse of the information,
  62. especially for those functions not officially  documented.  If it is marked
  63. "internal" or undocumented, you should check it carefully to make sure it
  64. works the same way in your version of the software (and please let me know
  65. whether or not it works the same way).    Information marked with "???" is
  66. known to be incomplete or guesswork.
  67. ---------------------------------------------
  68. The use of -> instead of = signifies that the indicated register or register
  69. pair contains a pointer to the specified item, rather than the item itself.
  70. One or more letters may follow the interrupt number; they have the following
  71. meanings:  U - undocumented function, u - partially documented function,
  72. P - available only in protected mode, R - available only in real or V86 mode,
  73. C - callout or callback (usually hooked rather than called),
  74. O - obsolete (no longer present in current versions)
  75.  
  76. The ninth column of the divider line preceding an entry usually contains a
  77. classification code (the entry has not been classified if that character is
  78. a dash).  The codes currently in use are:
  79.     A - applications, a - access software (screen readers, etc),
  80.     B - BIOS, b - vendor-specific BIOS extensions,
  81.     C - CPU-generated, c - caches/spoolers,
  82.     D - DOS kernel, d - disk I/O enhancements,
  83.     E - DOS extenders, e - electronic mail, F - FAX,
  84.     f - file manipulation, G - debuggers/debugging tools,
  85.     H - hardware, h - vendor-specific hardware,
  86.     I - IBM workstation/terminal emulators,
  87.     J - Japanese, j - joke programs,
  88.     K - keyboard enhancers, k - file compression,
  89.     l - shells/command interpreters,
  90.     M - mouse/pointing device, m - memory management,
  91.     N - network, O - other operating systems,
  92.     P - printer enhancements, p - power management,
  93.     Q - DESQview/TopView and Quarterdeck programs,
  94.     R - remote control/file access, r - runtime support,
  95.     S - serial I/O, s - sound/speech,
  96.     T - DOS-based task switchers/multitaskers, t - TSR libraries
  97.     U - resident utilities, u - emulators,
  98.     V - video, v - virus/antivirus,
  99.     W - MS Windows, y - security, * - reserved (& not otherwise classified)
  100. --------C-00---------------------------------
  101. INT 00 - CPU-generated - DIVIDE ERROR
  102. Desc:    generated if the divisor of a DIV or IDIV instruction is zero or the
  103.       quotient overflows the result register; DX and AX will be unchanged.
  104. Notes:    on an 8086/8088, the return address points to the following instruction
  105.     on an 80286+, the return address points to the divide instruction
  106.     an 8086/8088 will generate this interrupt if the result of a division
  107.       is 80h (byte) or 8000h (word)
  108. SeeAlso: INT 04
  109. --------b-00---------------------------------
  110. INT 00 - Zenith - ROM DEBUGGER
  111. Desc:    invokes the ROM Debugger when at the BIOS level; equivalent to
  112.       pressing Ctrl-Alt-Ins on booting.
  113. Note:    since DOS revectors INT 00, it is necessary to restore this vector to
  114.       its original ROM BIOS value in order to invoke the debugger once DOS
  115.       loads
  116. SeeAlso: INT 03"Columbia"
  117. --------C-01---------------------------------
  118. INT 01 - CPU-generated - SINGLE STEP
  119. Desc:    generated after each instruction if TF (trap flag) is set; TF is
  120.       cleared on invoking the single-step interrupt handler
  121. Notes:    interrupts are prioritized such that external interrupts are invoked
  122.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  123.       first instruction of the handler executes
  124.     used by debuggers for single-instruction execution tracing, such as
  125.       MS-DOS DEBUG's T command
  126. SeeAlso: INT 03
  127. --------C-01---------------------------------
  128. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  129. Desc:    generated by the CPU on various occurrences which may be of interest
  130.       to a debugger program
  131. Note:    events which may trigger the interrupt:
  132.       Instruction address breakpoint fault - will return to execute inst
  133.       Data address breakpoint trap - will return to following instruction
  134.       General detect fault, debug registers in use
  135.       Task-switch breakpoint trap
  136.       undocumented 386/486 opcode F1h - will return to following instruc
  137. SeeAlso: INT 03
  138. --------H-02---------------------------------
  139. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  140. Desc:    generated by the CPU when the input to the NMI pin is asserted
  141. Notes:    return address points to start of interrupted instruction on 80286+
  142.     on the 80286+, further NMIs are disabled until the next IRET
  143.       instruction, but one additional NMI is remembered by the hardware
  144.       and will be serviced after the IRET instruction reenables NMIs
  145.     maskable interrupts may interrupt the NMI handler if interrupts are
  146.       enabled
  147.     although the Intel documentation states that this interrupt is
  148.       typically used for power-failure procedures, it has many other uses
  149.       on IBM-compatible machines:
  150.         Memory parity error: all except Jr, CONV, and some machines
  151.                 without memory parity
  152.         Breakout switch on hardware debuggers
  153.         Coprocessor interrupt: all except Jr and CONV
  154.         Keyboard interrupt: Jr, CONV
  155.         I/O channel check: CONV, PS50+
  156.         Disk-controller power-on request: CONV
  157.         System suspend: CONV
  158.         Real-time clock: CONV
  159.         System watch-dog timer, time-out interrupt: PS50+
  160.         DMA timer time-out interrupt: PS50+
  161.         Low battery: HP 95LX
  162.         Module pulled: HP 95LX
  163. --------C-03---------------------------------
  164. INT 03 - CPU-generated - BREAKPOINT
  165. Desc:    generated by the one-byte breakpoint instruction (opcode CCh)
  166. Notes:    used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
  167.       command
  168.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  169.     return address points to byte following the breakpoint instruction
  170. SeeAlso: INT 01
  171. --------b-03---------------------------------
  172. INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
  173. Desc:    invokes the ROM Debugger if INT 03 has not been revectored; equivalent
  174.       to pressing Esc on booting.
  175. SeeAlso: INT 00"Zenith"
  176. --------G-030910SI4647-----------------------
  177. INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW
  178.     AX = 0910h
  179.     SI = 4647h ('FG')
  180.     DI = 4A4Dh ('JM')
  181.     DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  182. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  183. --------G-030911SI4647-----------------------
  184. INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND
  185.     AX = 0911h
  186.     SI = 4647h ('FG')
  187.     DI = 4A4Dh ('JM')
  188.     DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  189. --------G-030912SI4647-----------------------
  190. INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION
  191.     AX = 0912h
  192.     SI = 4647h ('FG')
  193.     DI = 4A4Dh ('JM')
  194. Return:    BH = entry number of last breakpoint set
  195.     BL = type of last breakpoint set
  196.         00h BPM (breakpoint register types)
  197.         01h I/O
  198.         02h INTerrupt
  199.         03h BPX (INT 03h-style breakpoint)
  200.         04h reserved
  201.         05h range
  202.     DH = entry number of last breakpoint to be triggered
  203.     DL = type of last triggered breakpoint (see above)
  204. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  205. SeeAlso: AX=0913h,AX=0914h
  206. --------G-030913SI4647-----------------------
  207. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT
  208.     AX = 0913h
  209.     SI = 4647h ('FG')
  210.     DI = 4A4Dh ('JM')
  211.     DS:DX -> breakpoint structure (see below)
  212. Return: AX = status
  213.         00h successful
  214.             BX = breakpoint number
  215.         03h breakpoint table full
  216.         06h memory limit error
  217.         07h I/O limit error
  218.         09h range limit error
  219.         16h duplicate breakpoint
  220. SeeAlso: AX=0312h,AX=0314h
  221.  
  222. Format of breakpoint structure:
  223. Offset    Size    Description
  224.  00h    BYTE    breakpoint type (see below)
  225.  01h    DWORD    breakpoint address 1
  226.          (lower range limit for memory BPs, interrupt # for interrupt
  227.         BPs, address of BP for execution BPs, I/O address (only word)
  228.         for I/O BPs)
  229.  05h    DWORD    breakpoint address 2
  230.          (upper range limit for memory BPs,
  231.         optional value to check for for interrupt BPs,
  232.         overlay number (0 = root) for execution BPs)
  233.  09h    DWORD    breakpoint address 3
  234.  0Dh    BYTE    breakpoint mode 1 (see below)
  235.          (for interrupt BPs = register to check
  236.                      00h  no value checking
  237.                      01h  check AL
  238.                      02h  check AH
  239.                      03h  check AX
  240.  0Eh    BYTE    breakpoint mode 2 (see below)
  241.  0Fh    BYTE    breakpoint size (00h byte, 01h word, 03h dword)
  242.  10h    BYTE    breakpoint pass count before program stop
  243.  11h    BYTE    breakpoint state
  244. Note:    all unused fields should contain zeros
  245.  
  246. Values for breakpoint type:
  247.  00h    memory location
  248.  01h    memory range
  249.  03h    I/O
  250.  04h    interrupt
  251.  05h    execution break
  252.  
  253. Values for breakpoint mode:
  254.  01h    read
  255.  02h    write
  256.  04h    execution
  257. --------G-030914SI4647-----------------------
  258. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT
  259.     AX = 0914h
  260.     SI = 4647h ('FG')
  261.     DI = 4A4Dh ('JM')
  262.     BX = breakpoint number (returned by AX=0913h)
  263. Return: BX = ???
  264. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  265. SeeAlso: AX=0912h,AX=0913h
  266. --------C-04---------------------------------
  267. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  268. Desc:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  269.       is set; otherwise, INTO is effectively a NOP
  270. Note:    may be used for convenient overflow testing (to prevent errors from
  271.       propagating) instead of JO or a JNO/JMP combination
  272. SeeAlso: INT 00
  273. --------B-05---------------------------------
  274. INT 05 - PRINT SCREEN
  275. Desc:    dump the current text screen to the first printer
  276. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  277.       may be invoked directly by applications
  278.     byte at 0050h:0000h contains status used by default handler
  279.       00h not active
  280.       01h PrtSc in progress
  281.       FFh last PrtSc encountered error
  282.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  283. SeeAlso: INT 10/AH=12h/BL=20h
  284. --------C-05---------------------------------
  285. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  286. Desc:    generated by BOUND instruction when the value to be tested is less than
  287.       the indicated lower bound or greater than the indicated upper bound.
  288. Note:    returning from this interrupt re-executes the failing BOUND instruction
  289. ----------05454A-----------------------------
  290. INT 05 U - PSPS v2.01 - EJECT PAGE
  291.     AX = 454Ah ('EJ')
  292. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  293.       Technologies
  294. Note:    sends a ^D to the current printer
  295. SeeAlso: AX=4E57h,AX=5053h,AX=554Eh
  296. ----------054E57-----------------------------
  297. INT 05 U - PSPS v2.01 - SET PARAMETERS
  298.     AX = 4E57h ('NW')
  299.     ES:SI -> 11-byte buffer containing new settings
  300. Return: buffer filled
  301. SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h
  302. ----------055053-----------------------------
  303. INT 05 U - PSPS v2.01 - GET PARAMETERS
  304.     AX = 5053h ('PS')
  305.     ES:SI -> 11-byte buffer containing new settings
  306. SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h
  307. ----------05554E-----------------------------
  308. INT 05 U - PSPS v2.01 - UNINSTALL
  309.     AX = 554Eh ('UN')
  310. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  311.       Technologies
  312. SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h
  313. --------C-06---------------------------------
  314. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  315. Desc:    this interrupt is generated when the CPU attempts to execute an
  316.       invalid opcode (most protected-mode instructions are considered
  317.       invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
  318.       which specifies a register rather than a memory address
  319. Notes:    return address points to beginning of invalid instruction
  320.     with proper programming, this interrupt may be used to emulate
  321.       instructions which do not exist; many 386 BIOSes emulate the 80286
  322.       undocumented LOADALL instruction which was removed from the 80386+
  323.     generated by the 80386+ when the LOCK prefix is used with instructions
  324.       other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC,
  325.       NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction
  326.       not accessing memory.
  327. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  328. --------b-06---------------------------------
  329. INT 06 C - HP 95LX - SLEEP/WAKEUP
  330. Desc:    this interrupt is called just before going into light or deep
  331.       (shutdown) sleep and just after returning from light or deep sleep
  332. SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
  333. --------C-07---------------------------------
  334. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  335. Desc:    this interrupt is automatically called if a coprocessor instruction is
  336.       encountered when no coprocessor is installed
  337. Note:    can be used to emulate a numeric coprocessor in software
  338. SeeAlso: INT 09"MATH UNIT PROTECTION"
  339. --------H-08---------------------------------
  340. INT 08 - IRQ0 - SYSTEM TIMER
  341. Desc:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  342.       this interrupt is used to keep the time-of-day clock updated
  343. Notes:    programs which need to be invoked regularly should use INT 1C unless
  344.       they need to reprogram the timer while still keeping the time-of-day
  345.       clock running at the proper rate
  346.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  347.     may be masked by setting bit 0 on I/O port 21h
  348. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
  349. SeeAlso: INT D8"Screen Thief"
  350. --------C-08---------------------------------
  351. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  352. Desc:    called when multiple exceptions occur on one instruction, or an
  353.       exception occurs in an exception handler
  354. Notes:    called in protected mode if an interrupt above the defined limit of
  355.       the interrupt vector table occurs
  356.     return address points at beginning of instruction with errors or the
  357.       beginning of the instruction which was about to execute when the
  358.       external interrupt caused the exception
  359.     if an exception occurs in the double fault handler, the CPU goes into
  360.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  361.       this "triple fault" is a faster way of returning to real mode on
  362.       many 80286 machines than the standard keyboard controller reset
  363. --------H-09---------------------------------
  364. INT 09 - IRQ1 - KEYBOARD DATA READY
  365. Desc:    this interrupt is generated when data is received from the keyboard.
  366.       This is normally a scan code (from either a keypress *or* a key
  367.       release), but may also be an ACK or NAK of a command on AT-class
  368.       keyboards.
  369. Notes:    this IRQ may be masked by setting bit 1 on I/O port 21h
  370.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  371.       INT 15/AH=4Fh after reading the scan code from the keyboard and
  372.       before further processing; all further processing uses the scan
  373.       code returned from INT 15/AH=4Fh
  374.     the default interrupt handler is at F000h:E987h in 100%-compatible
  375.       BIOSes
  376.     the interrupt handler performs the following actions for certain
  377.       special keystrokes:
  378.         Ctrl-Break     clear keyboard buffer, place word 0000h in buffer,
  379.              invoke INT 1B, and set flag at 0040h:0071h
  380.         SysRq     invoke INT 15/AH=85h
  381.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  382.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  383.                destination of the jump at that address)
  384.         Shift-PrtSc     invoke INT 05
  385.     DRDOS hooks this interrupt to control the cursor shape (underscore/
  386.       half block) for overwrite/insert mode
  387.     DR Multiuser DOS hooks this interrupt for cursor shape control and to
  388.       control whether Ctrl-Alt-Del reboots the current session or the
  389.       entire system
  390. SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
  391. SeeAlso: INT 2F/AX=A901h,INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  392.  
  393. Values for scan code:
  394.  01h    Esc         31h    N        
  395.  02h    1 !         32h    M        
  396.  03h    2 @         33h    , <         63h    F16
  397.  04h    3 #         34h    . >         64h    F17
  398.  05h    4 $         35h    / ?         65h    F18
  399.  06h    5 %         36h    Right Shift     66h    F19
  400.  07h    6 ^         37h    Grey*         67h    F20
  401.  08h    7 &         38h    Alt         68h    F21
  402.  09h    8 *         39h    SpaceBar     69h    F22
  403.  0Ah    9 (         3Ah    CapsLock     6Ah    F23
  404.  0Bh    0 )         3Bh    F1         6Bh    F24
  405.  0Ch    - _         3Ch    F2         6Ch    --
  406.  0Dh    = +         3Dh    F3         6Dh    EraseEOF
  407.  0Eh    Backspace     3Eh    F4        
  408.  0Fh    Tab         3Fh    F5         6Fh    Copy/Play
  409.  10h    Q         40h    F6        
  410.  11h    W         41h    F7        
  411.  12h    E         42h    F8         72h    CrSel
  412.  13h    R         43h    F9        
  413.  14h    T         44h    F10         74h    ExSel
  414.  15h    Y         45h    NumLock         75h    --
  415.  16h    U         46h    ScrollLock     76h    Clear
  416.  17h    I         47h    Home
  417.  18h    O         48h    UpArrow
  418.  19h    P         49h    PgUp
  419.  1Ah    [ {         4Ah    Grey-
  420.  1Bh    ] }         4Bh    LeftArrow
  421.  1Ch    Enter         4Ch    Keypad 5                     
  422.  1Dh    Ctrl         4Dh    RightArrow                     
  423.  1Eh    A         4Eh    Grey+                         
  424.  1Fh    S         4Fh    End                         
  425.  20h    D         50h    DownArrow     E0h    prefix code
  426.  21h    F         51h    PgDn         E1h    prefix code
  427.  22h    G         52h    Ins         FAh    ACK
  428.  23h    H         53h    Del         FEh    RESEND
  429.  24h    J         54h    SysRq         FFh    kbd error/buffer full
  430.  25h    K
  431.  26h    L         56h    left \| (102-key)            
  432.  27h    ; :         57h    F11
  433.  28h    ' "         58h    F12        
  434.  29h    ` ~        
  435.  2Ah    Left Shift     5Ah    PA1
  436.  2Bh    \ |         5Bh    F13
  437.  2Ch    Z         5Ch    F14
  438.  2Dh    X         5Dh    F15
  439.  2Eh    C        
  440.  2Fh    V        
  441.  30h    B        
  442. Note:    scan codes 56h-E1h are only available on the extended (101/102-key)
  443.       keyboard and Host Connected (122-key) keyboard; scan codes 5Ah-76h
  444.       are only available on the 122-key keyboard
  445. --------C-09---------------------------------
  446. INT 09 - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
  447. Desc:    called if the coprocessor attempts to access memory outside a segment
  448.       boundary; it may occur at an arbitrary time after the coprocessor
  449.       instruction was issued
  450. Note:    until the condition is cleared or the coprocessor is reset, the only
  451.       coprocessor instruction which may be used is FNINIT; WAIT or other
  452.       coprocessor instructions will cause a deadlock because the
  453.       coprocessor is still busy waiting for data
  454. SeeAlso: INT 07"CPU"
  455. --------*-09---------------------------------
  456. INT 09 P - internal hardware - RESERVED BY Intel (80486)
  457. Note:    this exception has been moved to INT 0D
  458. SeeAlso: INT 09"MATH",INT 0D
  459. --------H-0A---------------------------------
  460. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  461. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  462.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  463.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  464.       connects to the slave 8259.  The BIOS redirects the interrupt for
  465.       IRQ9 back here.
  466.     under DESQview, only the INT 15h vector and BASIC segment address (the
  467.       word at 0000h:0510h) may be assumed to be valid for the handler's
  468.       process
  469.     many VGA boards do not implement the vertical retrace interrupt,
  470.       including the IBM VGA Adapter where the traces are either cut or
  471.       removed
  472. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  473. --------H-0A---------------------------------
  474. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  475. Note:    may be masked by setting bit 2 on I/O port 21h
  476. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  477. --------H-0A---------------------------------
  478. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  479. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  480.       a jumper-selectable IRQ, but software and hardware generally defaults
  481.       to IRQ2
  482. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  483. --------C-0A---------------------------------
  484. INT 0A P - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
  485. Desc:    automatically called during a task switch if the new TSS specified by
  486.       the task gate is invalid for any of the following reasons:
  487.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  488.         LDT selector invalid or segment not present
  489.         null SS selector, or SS selector outside LDT/GDT limit
  490.         stack segment is read-only
  491.         stack segment DPL differs from new CPL, or RPL <> CPL
  492.         CS selector is outside LDT/GDT limit or not code
  493.         non-conforming code segment's DPL differs from CPL
  494.         conforming code segment's DPL > CPL
  495.         DS/ES selectors outside LDT/GDT limit or not readable segments
  496. Note:    the handler must use a task gate in order to have a valid TSS under
  497.       which to execute; it must also reset the busy bit in the new TSS
  498. SeeAlso: INT 0B"CPU"
  499. --------H-0B---------------------------------
  500. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  501. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  502.       UART has been programmed to generate interrupts
  503. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  504.       alternate
  505.     on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4
  506.       shares this interrupt
  507.     may be masked by setting bit 3 on I/O port 21h
  508. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  509. --------C-0B---------------------------------
  510. INT 0B P - CPU-generated (80286+) - SEGMENT NOT PRESENT
  511. Desc:    generated when loading a segment register if the segment descriptor
  512.       indicates that the segment is not currently in memory, unless the
  513.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  514.       INT 0C"CPU") needed by a task switch
  515. Note:    may be used to implement virtual memory by loading in segments as they
  516.       are accessed, clearing the "not present" bit after loading
  517. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  518. --------h-0B---------------------------------
  519. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  520. Desc:    this is the lowest-level keyboard handler on an HP 95LX palmtop
  521. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  522. SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
  523. --------H-0C---------------------------------
  524. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  525. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  526.       UART has been programmed to generate interrupts
  527. Notes:    on many PC's, COM3 shares this interrupt
  528.     may be masked by setting bit 4 on I/O port 21h
  529.     this vector is modified but not restored by Direct Access v4.0, and
  530.       may be left dangling by other programs written with the same version
  531.       of compiled BASIC
  532. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  533. --------C-0C---------------------------------
  534. INT 0C - CPU-generated (80286+) - STACK FAULT
  535. Desc:    this interrupt is generated in protected mode on a stack overflow or
  536.       underflow, or if an inter-level transition or task switch references
  537.       a stack segment marked "not present"; it is generated in real mode
  538.       on accessing a word operand at SS:FFFFh
  539. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  540.       PC AT and compatibles, external circuitry generates a reset on
  541.       shutdown.
  542. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  543. --------I-0C---------------------------------
  544. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  545. Desc:    the IBM System 36/38 emulator may be invoked through a private API,
  546.       whose entry point address is offset 100h in the segment pointed at
  547.       by this vector
  548.  
  549. Call the API entry point with
  550.     AH = function
  551.         03h update screen
  552.         05h select next session
  553.         AL = session number (00h-03h)
  554.         Return: AL = session type code
  555.                 00h not active
  556.                 01h display session
  557.                 02h printer session
  558.                 FEh invalid session number
  559.             DS = requested session's data segment (0 if not active)
  560. Return: ???
  561.  
  562. Format of emulator's data area (offset from interrupt handler's segment):
  563. Offset    Size    Description
  564. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  565.         last zerod
  566. 13Fh    BYTE    bit flags for status line indicators turned off since this
  567.         byte last set to FFh
  568. 140h    WORD    offset of EBCDIC to ASCII translation
  569. 146h    WORD    offset of EBCDIC screen buffer
  570. 148h    WORD    offset of EC (engineering change) level signature
  571. 150h    BYTE    "KEYI"
  572. 151h    BYTE    5250 key scan code to be sent to remote
  573. 15Bh    BYTE    "SYSAV"
  574. 15Dh    BYTE    5250 cursor column
  575. 15Eh    BYTE    5250 cursor row
  576. 167h    BYTE    "DVCTAD"
  577. 178h    BYTE    "FLAGS"
  578. 184h    BYTE    "SESSNOAD"
  579. 193h    BYTE    "STNAD"
  580. 198h    BYTE    "NSDS"
  581. --------H-0D---------------------------------
  582. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  583. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  584.       word at 0000h:0510h) may be assumed to be valid for the handler's
  585.       process
  586.     may be masked by setting bit 5 on I/O port 21h
  587. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  588. SeeAlso: INT 7D"GO32"
  589. --------H-0D---------------------------------
  590. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  591. Desc:    used to ensure that the dynamic RAM retains its contents
  592. SeeAlso: INT 55
  593. --------h-0D---------------------------------
  594. INT 0D - HP 95LX - INFRARED INTERRUPT
  595. Desc:    this interrupt is used to perform communications over the infrared
  596.       data link
  597. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
  598. --------C-0D---------------------------------
  599. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  600. Desc:    the CPU generates this interrupt when it detects a protection violation
  601.       which does not fit under any other category having a separate
  602.       interrupt
  603. Notes:    called in real mode when
  604.         an instruction accesses a memory operand extending beyond offset
  605.           FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
  606.           CS, DS, ES, FG, or GS
  607.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  608.           in the second byte
  609.         an instruction exceeds the maximum length allowed (10 bytes for
  610.           80286, 15 bytes for 80386/80486)
  611.         an instruction wraps from offset FFFFh to offset 0000h
  612.     called in protected mode on protection violations not covered by INT 06
  613.       through INT 0C, including
  614.         segment limit violations
  615.         write to read-only segments
  616.         accesses using null DS or ES selectors
  617.         accesses to segments with privilege greater than CPL
  618.         wrong descriptor type
  619.     called on 80486 protected-mode floating-point protection fault
  620. SeeAlso: INT 09"80486",INT 0C"STACK"
  621. --------H-0E---------------------------------
  622. INT 0E - IRQ6 - DISKETTE CONTROLLER
  623. Desc:    this interrupt is generated by the floppy disk controller on
  624.       completion of an operation
  625. Notes:    default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  626.     may be masked by setting bit 6 on I/O port 21h
  627. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  628. --------C-0E---------------------------------
  629. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  630. Desc:    this interrupt is generated in protected and virtual-86 modes on
  631.       attempting to access a 4K memory page whose page table entry has
  632.       the "present" bit cleared
  633. Note:    used to implement virtual memory
  634. SeeAlso: INT 0B"hardware"
  635. --------h-0E---------------------------------
  636. INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
  637. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
  638. --------H-0F---------------------------------
  639. INT 0F - IRQ7 - PARALLEL PRINTER
  640. Desc:    this interrupt is generated by the LPT1 printer adapter when the
  641.       printer becomes ready
  642. Notes:    most printer adapters do not reliably generate this interrupt
  643.     the 8259 interrupt controller generates an interrupt corresponding to
  644.       IRQ7 when an error condition occurs
  645. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  646. --------h-0F---------------------------------
  647. INT 0F - HP 95LX - REAL-TIME CLOCK
  648. SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70
  649. --------C-10---------------------------------
  650. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  651. Desc:    this interrupt is generated by the CPU when the -ERROR pin is asserted
  652.       by the coprocessor
  653. Note:    AT's and clones usually wire the coprocessor to use IRQ13, but not all
  654.       get it right
  655. SeeAlso: INT 09"hardware",INT 75
  656. --------V-1000-------------------------------
  657. INT 10 - VIDEO - SET VIDEO MODE
  658.     AH = 00h
  659.     AL = mode (see below)
  660. Return: AL = video mode flag (Phoenix BIOS)
  661.         20h mode > 7
  662.         30h modes 0-5 and 7
  663.         3Fh mode 6
  664.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  665. Desc:    specify the display mode for the currently active display adapter
  666. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  667.       (EGA or higher only)
  668.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  669.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
  670.       Everex EV-673
  671.     the installation check for Ahead adapters is the signature "AHEAD" at
  672.       C000h:0025h
  673.     the installation check for Paradise adapters is the signature "VGA=" at
  674.       C000h:007Dh
  675.     the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
  676.       signature "OAK VGA" at C000h:0008h
  677.     the installation check for ATI adapters is the signature "761295520" at
  678.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  679.         31h for 18800
  680.         32h for 18800-1
  681.         33h for 18800-2
  682.         34h for 18800-4
  683.         35h for 18800-5
  684.       the two bytes at C000h:0040h indicate the adapter type
  685.         "22" EGA Wonder
  686.         "31" VGA Wonder
  687.         "32" EGA Wonder800+
  688.       the byte at C000h:0042h contains feature flags
  689.         bit 1: mouse port present
  690.         bit 4: programmable video clock
  691.       the byte at C000h:0044h contains additional feature flags if chipset
  692.         byte > 30h (see below)
  693.     the installation check for Genoa video adapters is the signature
  694.       77h XXh 99h 66h at C000h:NNNNh, where NNNNh is stored at C000h:0037h
  695.       and XXh is
  696.         00h for Genoa 6200/6300
  697.         11h for Genoa 6400/6600
  698.         22h for Genoa 6100
  699.         33h for Genoa 5100/5200
  700.         55h for Genoa 5300/5400
  701.       for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
  702.       for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
  703.         "EXTMODE", indicating support for extended modes
  704. SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
  705. SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h
  706. Index:    installation check;Tseng ET4000|installation check;Ahead video cards
  707. Index:    installation check;Oak Technologies|installation check;ATI video cards
  708. Index:    installation check;Paradise video|installation check;Genoa video cards
  709.  
  710. Bitfields for ATI additional feature flags:
  711.  bit 0    70 Hz non-interlaced display
  712.  bit 1    Korean (double-byte) characters
  713.  bit 2    45 MHz memory clock rather than 40 MHz
  714.  bit 3    zero wait states
  715.  bit 4    paged ROMs
  716.  bit 6    no 8514/A monitor support
  717.  bit 7    HiColor DAC
  718.  
  719. Values for video mode:
  720.       text/ text pixel     pixel    colors    disply    scrn  system
  721.       grph resol  box    resoltn        pages    addr
  722.  00h = T   40x25  8x8        16gray       8    B800 CGA,PCjr
  723.      = T   40x25  8x14        16gray       8    B800 EGA
  724.      = T   40x25  8x16          16       8    B800 MCGA
  725.      = T   40x25  9x16          16       8    B800 VGA
  726.  01h = T   40x25  8x8          16       8    B800 CGA,PCjr
  727.      = T   40x25  8x14          16       8    B800 EGA
  728.      = T   40x25  8x16          16       8    B800 MCGA
  729.      = T   40x25  9x16          16       8    B800 VGA
  730.  02h = T   80x25  8x8        16gray       4    B800 CGA,PCjr
  731.      = T   80x25  8x14        16gray       4    B800 EGA
  732.      = T   80x25  8x16          16       4    B800 MCGA
  733.      = T   80x25  9x16          16       4    B800 VGA
  734.  03h = T   80x25  8x8          16       4    B800 CGA,PCjr
  735.      = T   80x25  8x14          16       4    B800 EGA
  736.      = T   80x25  8x16          16       4    B800 MCGA
  737.      = T   80x25  9x16          16       4    B800 VGA
  738.  04h = G   40x25  8x8    320x200       4        B800 CGA,PCjr,EGA,MCGA,VGA
  739.  05h = G   40x25  8x8    320x200     4gray        B800 CGA,PCjr,EGA
  740.      = G   40x25  8x8    320x200       4        B800 MCGA,VGA
  741.  06h = G   80x25  8x8    640x200       2        B800 CGA,PCjr,EGA,MCGA,VGA
  742.  07h = T   80x25  9x14         mono      var    B000 MDA,Hercules,EGA
  743.      = T   80x25  9x16         mono        B000 VGA
  744.  08h = T  132x25  8x8          16        B800 ATI EGA/VGA Wonder [2]
  745.      = T  132x25  8x8         mono        B000 ATI EGA/VGA Wonder [2]
  746.      = G   20x25  8x8    160x200      16             PCjr, Tandy 1000
  747.      = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  748.  09h = G   40x25  8x8    320x200      16             PCjr
  749.  0Ah = G   80x25  8x8    640x200       4             PCjr, Tandy 1000
  750.  0Bh =     reserved (used internally by EGA BIOS)
  751.      = G        640x200      16             Tandy 1000 SL/TL
  752.  0Ch =     reserved (used internally by EGA BIOS)
  753.  0Dh = G   40x25  8x8    320x200      16       8    A000 EGA,VGA
  754.  0Eh = G   80x25  8x8    640x200      16       4    A000 EGA,VGA
  755.  0Fh = G   80x25  8x14    640x350     mono       2    A000 EGA,VGA
  756.  10h = G   80x25  8x14    640x350       4       2    A000 64k EGA
  757.      = G        640x350      16        A000 256k EGA,VGA
  758.  11h = G   80x30  8x16    640x480     mono        A000 VGA,MCGA,ATI EGA,ATI VIP
  759.  12h = G   80x30  8x16    640x480  16/256k    A000 VGA,ATI VIP
  760.      = G   80x30  8x16    640x480     16/64        A000 ATI EGA Wonder
  761.      = G        640x480      16             UltraVision+256K EGA
  762.  13h = G   40x25  8x8    320x200 256/256k    A000 VGA,MCGA,ATI VIP
  763.  14h = T  132x25  Nx16          16             XGA, IBM Enhanced VGA [3]
  764.      = T  132x25  8x16 1056x400  16/256k         Cirrus CL-GD5420/5422/5426
  765.      = G   80x25  8x8    640x200                 Lava Chrome II EGA
  766.      = G        640x400      16             Tecmar VGA/AD
  767.  15h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  768.  16h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  769.      = G        800x600      16             Tecmar VGA/AD
  770.  17h = T  132x25                     Tecmar VGA/AD
  771.      = T   80x43  8x8    640x350   16       4    B800 Tseng ET4000 BIOS [10]
  772.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  773.  18h = T  132x25         mono        B000 Cirrus 5320 chipset
  774.      = T  132x44  8x8         mono        B000 Tseng Labs EVA
  775.      = T  132x44  9x8  1188x352   4gray       2    B000 Tseng ET3000 chipset
  776.      = T  132x44  8x8         16/256       2    B000 Tseng ET4000 chipset
  777.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  778.      = G           1024x768      16             Tecmar VGA/AD
  779.  19h = T  132x25  8x14         mono        B000 Tseng Labs EVA
  780.      = T  132x25  9x14 1188x350   4gray       4    B000 Tseng ET3000 chipset
  781.      = T  132x25  8x14         16/256       4    B000 Tseng ET4000 chipset
  782.      = T  132x34         mono        B000 Cirrus 5320 chipset
  783.  1Ah = T  132x28  8x13         mono        B000 Tseng Labs EVA
  784.      = T  132x28  9x13 1188x364   4gray       4    B000 Tseng ET3000 chipset
  785.      = T  132x28  8x13         16/256       4    B000 Tseng ET4000 chipset
  786.      = T  132x44         mono        B000 Cirrus 5320 chipset
  787.      = G        640x350     256             Tecmar VGA/AD
  788.  1Bh = G        640x400     256             Tecmar VGA/AD
  789.  1Ch = T  132x25                     Cirrus 5320 chipset
  790.      = G        640x480     256             Tecmar VGA/AD
  791.  1Dh = T  132x43                     Cirrus 5320 chipset
  792.      = G        800x600     256             Tecmar VGA/AD
  793.  1Eh = T  132x44                     Cirrus 5320 chipset
  794.  1Fh = G        800x600      16             Realtek RTVGA
  795.  20h = G        240x128            B000 HP 95LX
  796.  21h = T  132x60          16       2    B800 Tseng ET4000 chipset [10]
  797.      = T  132x44  9x9  1188x396     16/256k    B800 WD90C
  798.      = T  132x44  9x9          16        B800 Diamond Speedstar 24X
  799.      = G   80x43  8x8    720x348     mono        B000 DESQview 2.x+Hercules [4]
  800.      = G           1024x768      16             Realtek RTVGA
  801.  22h = T  132x43                     Allstar Peacock (VGA)
  802.      = T  132x44  8x8                     Tseng Labs EVA
  803.      = T  132x44  9x8  1188x352  16/256k   2    B800 Tseng ET3000 chipset
  804.      = T  132x44  8x8         16/256k   2    B800 Tseng ET4000 chipset
  805.      = T  132x44  8x8                     Ahead Systems EGA2001
  806.      = T  132x44  8x8          16       2    B800 Ahead B
  807.      = T  132x44          16             Orchid Prodesigner VGA
  808.      = G   80x43  8x8    720x348     mono        B800 DESQview 2.x+Hercules [4]
  809.  23h = T  132x25  6x14                     Tseng Labs EVA
  810.      = T  132x25  9x14 1188x350  16/256k   4    B800 Tseng ET3000 chipset
  811.      = T  132x25  8x14         16/256       4    B800 Tseng ET4000 chipset
  812.      = T  132x25  8x14                     Ahead Systems EGA2001
  813.      = T  132x25  8x14          16       4    B800 Ahead B
  814.      = T  132x25  8x8          16        B800 ATI EGA Wonder,ATI VIP
  815.      = T  132x25                     Cirrus 5320 chipset
  816.      = T  132x28                     Allstar Peacock (VGA)
  817.      = T  132x28          16             Orchid Prodesigner VGA
  818.  24h = T  132x25                     Allstar Peacock (VGA)
  819.      = T  132x25          16             Orchid Prodesigner VGA
  820.      = T  132x28  6x13                     Tseng Labs EVA
  821.      = T  132x28  9x13 1188x364  16/256k   4    B800 Tseng ET3000 chipset
  822.      = T  132x28  8x13         16/256k   4    B800 Tseng ET4000 chipset
  823.      = T  132x28  8x12          16       1    B800 Ahead B
  824.      = T  132x28                     Cirrus 5320 chipset
  825.  25h = G   80x60  8x8    640x480                 Tseng Labs EVA
  826.      = G   80x60  8x8    640x480     16/256k   1    A000 Tseng ET3000/4000 chipset
  827.      = G        640x480      16             VEGA VGA
  828.      = G   80x60  8x8    640x480      16        A000 Orchid Prodesigner VGA
  829.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 26h)
  830.      = G        640x480      16             NEC GB-1
  831.      = G        640x480      16             Cirrus 5320 chipset
  832.      = G        640x400     256             Realtek RTVGA
  833.  26h = T   80x60  8x8                     Tseng Labs EVA
  834.      = T   80x60  8x8    640x480     16/256k   3    B800 Tseng ET3000/4000 chipset
  835.      = T   80x60                     Allstar Peacock (VGA)
  836.      = T   80x60          16             Orchid ProDesigner VGA
  837.      = G   80x60  8x8    640x480                 Ahead Systems EGA2001
  838.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 25h)
  839.      = G        640x480     256             Realtek RTVGA
  840.  27h = T  132x25  8x8         mono        B000 ATI EGA Wonder,ATI VIP
  841.      = G        720x512      16             VEGA VGA
  842.      = G        720x512      16             Genoa
  843.      = G        800x600     256             Realtek RTVGA
  844.  28h = T  ???x???                     VEGA VGA
  845.      = G           1024x768     256             Realtek RTVGA (1meg)
  846.  29h = G        800x600      16             VEGA VGA
  847.      = G  100x37  8x16    800x600      16        A000 Orchid
  848.      = G        800x600      16        A000 STB,Genoa,Sigma
  849.      = G        800x600      16             Allstar Peacock (VGA)
  850.      = G  100x37  8x16    800x600     16/256k   1    A000 Tseng ET3000/4000 chipset
  851.      = G        800x600     ???             EIZO MDB10
  852.      = G        800x600      16             Cirrus 5320 chipset
  853.  2Ah = T  100x40                     Allstar Peacock (VGA)
  854.      = T  100x40  8x16          16             Orchid Prodesigner VGA
  855.      = T  100x40  8x15    800x600     16/256k   4    B800 Tseng ET3000/4000 chipset
  856.      = G           1280x1024 256             Realtek RTVGA
  857.  2Dh = G        640x350     256             VEGA VGA
  858.      = G        640x350 256/256k    A000 Orchid, Genoa, STB
  859.      = G   80x25  8x14    640x350 256/256k   1    A000 Tseng ET3000/4000 chipset
  860.      = G        640x350     256             Cirrus 5320 chipset
  861.  2Eh = G        640x480     256             VEGA VGA
  862.      = G   80x30  8x16    640x480 256/256k    A000 Orchid
  863.      = G        640x480 256/256k    A000 STB,Genoa,Sigma
  864.      = G   80x30  8x16    640x480 256/256k   1    A000 Tseng ET3000/4000 chipset
  865.  2Fh = T  160x50  8x8  1280x400      16       4    B800 Ahead B (Wizard/3270)
  866.      = G        720x512     256             VEGA VGA
  867.      = G        720x512     256             Genoa
  868.      = G   80x25  8x16    640x400 256/256k   1    A000 Tseng ET4000 chipset
  869.  30h = G        800x600     256             VEGA VGA
  870.      = G  100x37  8x16    800x600 256/256k    A000 Orchid 
  871.      = G        800x600 256/256k    A000 STB,Genoa,Sigma
  872.      = G        720x350       2             3270 PC
  873.      = G        800x600     256             Cardinal
  874.      = G        ???x???            B800 AT&T 6300
  875.      = G  100x37  8x16    800x600 256/256k   1    A000 Tseng ET3000/4000 chipset
  876.  32h = T   80x34  8x10          16       4    B800 Ahead B (Wizard/3270)
  877.  33h = T  132x44  8x8          16        B800 ATI EGA Wonder,ATI VIP
  878.      = T   80x34  8x8          16       4    B800 Ahead B (Wizard/3270)
  879.  34h = T   80x66  8x8          16       4    B800 Ahead B (Wizard/3270)
  880.  36h = G        960x720      16             VEGA VGA
  881.      = G        960x720      16             STB
  882.      = G        960x720      16             Tseng ET3000 only
  883.  37h = T  132x44  8x8         mono        B800 ATI EGA Wonder,ATI VIP
  884.      = G           1024x768      16             VEGA VGA
  885.      = G  128x48  8x16 1024x768      16        A000 Orchid
  886.      = G           1024x768      16        A000 STB,Genoa,Sigma
  887.      = G           1024x768      16             Definicon
  888.      = G  128x48  8x16 1024x768      16       1    A000 Tseng ET3000/4000 chipset
  889.  38h = G           1024x768     256             STB VGA/EM-16 Plus (1MB)
  890.      = G  128x48  8x16 1024x768 256/256k   1    A000 Tseng ET4000 chipset
  891.      = G           1024x768     256             Orchid ProDesigner II
  892.  3Dh = G           1280x1024  16             Definicon
  893.      = G  128x64  8x16 1280x1024  16       1    A000 Tseng ET4000 v3.00 [1,7]
  894.  3Eh = G           1280x961      16             Definicon
  895.  40h = T   80x43                     VEGA VGA, Tecmar VGA/AD
  896.      = T   80x43                     Video7 V-RAM VGA
  897.      = T   80x43                     Tatung VGA
  898.      = T  100x30          16             MORSE VGA
  899.      = T  100x30                     Cirrus 510/520 chipset
  900.      = T   80x25    720x350     mono             Genoa SuperEGA BIOS 3.0+
  901.      = G   80x25  8x16    640x400       2       1    B800 AT&T 6300, AT&T VDC600
  902.      = G   80x25  8x16    640x400       2       1    B800 Compaq Portable
  903.  41h = T  132x25                     VEGA VGA
  904.      = T  132x25                     Tatung VGA
  905.      = T  132x25                     Video7 V-RAM VGA
  906.      = T  100x50          16             MORSE VGA
  907.      = T  100x50                     Cirrus 510/520 chipset
  908.      = T   80x34  9x14    720x476     16/256k    B800 WD90C
  909.      = T   80x34  9x14          16        B800 Diamond Speedstar 24X
  910.      = G        640x200      16       1         AT&T 6300
  911.      = G   80x25    720x348     mono        B000 Genoa SuperEGA BIOS 3.0+
  912.  42h = T  132x43                     VEGA VGA
  913.      = T  132x43                     Tatung VGA
  914.      = T  132x43                     Video7 V-RAM VGA
  915.      = T   80x34  9x10           4       4    B800 Ahead B (Wizard/3270)
  916.      = T  100x60          16             MORSE VGA
  917.      = T  100x60                     Cirrus 510/520 chipset
  918.      = G   80x25  8x16    640x400      16             AT&T 6300, AT&T VDC600
  919.      = G   80x25    720x348     mono        B800 Genoa SuperEGA BIOS 3.0+
  920.  43h = T   80x60                     VEGA VGA
  921.      = T   80x60                     Tatung VGA
  922.      = T   80x60                     Video7 V-RAM VGA
  923.      = T   80x45  9x8           4       4    B800 Ahead B (Wizard/3270)
  924.      = T  100x75          16             MORSE VGA
  925.      = T   80x29    720x348     mono             Genoa SuperEGA BIOS 3.0+
  926.      = G         640x200 of 640x400 viewport     AT&T 6300 (unsupported)
  927.  44h =     disable VDC and DEB output             AT&T 6300
  928.      = T  100x60                     VEGA VGA
  929.      = T  100x60                     Tatung VGA
  930.      = T  100x60                     Video7 V-RAM VGA
  931.      = T   80x32    720x352     mono             Genoa SuperEGA BIOS 3.0+
  932.  45h = T  132x28                     Tatung VGA
  933.      = T  132x28                     Video7 V-RAM VGA
  934.      = T   80x44    720x352     mono             Genoa SuperEGA BIOS 3.0+
  935.  46h = T  132x25  8x14         mono             Genoa 6400
  936.      = T  132x25  9x14         mono             Genoa SuperEGA BIOS 3.0+
  937.      = G  100x40  8x15    800x600       2             AT&T VDC600
  938.  47h = T  132x29  8x12         mono             Genoa 6400
  939.      = T  132x29  9x12         mono             Genoa SuperEGA BIOS 3.0+
  940.      = T  132x28  9x16 1188x448     16/256k    B800 WD90C
  941.      = T  132x28  9x16          16        B800 Diamond Speedstar 24X
  942.      = G  100x37  8x16    800x600      16             AT&T VDC600
  943.  48h = T  132x32  8x12         mono             Genoa 6400
  944.      = T  132x32  9x11         mono             Genoa SuperEGA BIOS 3.0+
  945.      = G   80x50  8x8    640x400       2        B800 AT&T 6300, AT&T VDC600
  946.  49h = T  132x44  8x8         mono             Genoa 6400
  947.      = T  132x44  9x8         mono             Genoa SuperEGA BIOS 3.0+
  948.      = G   80x30  8x16    640x480                 Lava Chrome II EGA
  949.  4Dh = T  120x25                     VEGA VGA
  950.  4Eh = T  120x43                     VEGA VGA
  951.      = T   80x60  8x8         16/256k    B800 Oak OTI-067/OTI-077 [8]
  952.  4Fh = T  132x25                     VEGA VGA
  953.      = T  132x60                     some Oak Tech VGA [8]
  954.  50h = T   80x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  955.      = T   80x34                     Lava Chrome II EGA
  956.      = T   80x43         mono             VEGA VGA
  957.      = T  132x25  9x14         mono             Ahead Systems EGA2001
  958.      = T  132x25  9x14           4       4    B800 Ahead B
  959.      = T  132x25  8x14          16       8    B800 OAK Technologies VGA-16
  960.      = T  132x25  8x14         16/256k    B800 Oak OTI-037/067/077 [8]
  961.      = T  132x25  8x14 1056x350   16       8    B800 UM587 chipset
  962.      = T  132x30          16             MORSE VGA
  963.      = T  132x30                     Cirrus 510/520 chipset
  964.      = G   80x30  8x16    640x480      16             Paradise EGA-480
  965.      = G   80x30  8x16    640x480      16             NEL Electronics BIOS
  966.      = G        640x480     mono???         Taxan 565 EGA
  967.      = G   40x25  8x8    320x200                 Genoa SuperEGA BIOS 3.0+
  968.  51h = T   80x30  8x16                     Paradise EGA-480
  969.      = T   80x30  9x16                     NEL Electronics BIOS
  970.      = T   80x30                     Lava Chrome II EGA
  971.      = T   80x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  972.      = T  132x25         mono             VEGA VGA
  973.      = T  132x28  9x12           4       4    B800 Ahead B
  974.      = T  132x43  8x8          16       5    B800 OAK Technologies VGA-16
  975.      = T  132x43  8x8        16/256k        B800 Oak OTI-037/067/077
  976.      = T  132x43  8x8  1056x344   16       5    B800 UM587 chipset
  977.      = T  132x50          16             MORSE VGA
  978.      = T  132x50                     Cirrus 510/520 chipset
  979.      = G   80x34  8x14    640x480      16             ATI EGA Wonder
  980.      = G   80x25  8x8    640x200                 Genoa SuperEGA BIOS 3.0+
  981.  52h = T   80x60                     Lava Chrome II EGA
  982.      = T   80x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  983.      = T  132x43         mono             VEGA VGA
  984.      = T  132x44  9x8         mono             Ahead Systems EGA2001
  985.      = T  132x44  9x8           4       2    B800 Ahead B
  986.      = T  132x60          16             MORSE VGA
  987.      = T  132x60                     Cirrus 510/520 chipset
  988.      = G   94x29  8x14    752x410      16             ATI EGA Wonder
  989.      = G  100x75  8x8    800x600      16       1    A000 OAK Technologies VGA-16
  990.      = G  100x75  8x8    800x600      16        A000 Oak OTI-037 chipset [8]
  991.      = G  100x37  8x16    800x600      16        A000 Oak OTI-067/077 chips [8]
  992.      = G  100x75  8x8   800x600   16        A000 UM587 chipset
  993.      = G  128x30  8x16 1024x480      16             NEL Electronics BIOS
  994.  53h = T   80x25  8x16                     NEL Electronics BIOS
  995.      = T   80x60          16             MORSE VGA
  996.      = T   80x60                     Cirrus 510/520 chipset
  997.      = T  132x25  8x14         16/256k    B800 Trident TVGA 8800/8900
  998.      = T  132x43                     Lava Chrome II EGA
  999.      = G        640x480     256             Oak VGA
  1000.      = G   80x30  8x16    640x480     256        A000 Oak OTI-067/OTI-077 [8]
  1001.      = G  100x40  8x14    800x560      16             ATI EGA Wonder,ATI VIP
  1002.      = G                         AX PC
  1003.  54h = T  132x25                     Lava Chrome II EGA
  1004.      = T  132x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  1005.      = T  132x43  8x8                     Paradise EGA-480
  1006.      = T  132x43  8x8                     NEL Electronics BIOS
  1007.      = T  132x43  7x9         16/256k    B800 Paradise VGA
  1008.      = T  132x43  8x9         16/256k    B800 Paradise VGA on multisync
  1009.      = T  132x43                     Taxan 565 EGA
  1010.      = T  132x43                     AST VGA Plus
  1011.      = T  132x43                     Hewlett-Packard D1180A
  1012.      = T  132x43  7x9          16             AT&T VDC600
  1013.      = T  132x43  9x9  1188x387     16/256k    B800 WD90C
  1014.      = T  132x43  9x9          16        B800 Diamond Speedstar 24X
  1015.      = T  132x43  8x8  1056x350  16/256k         Cirrus CL-GD5420/5422/5426
  1016.      = T  132x50  8x8          16        A000 NCR 77C22 [9]
  1017.      = G  100x42  8x14    800x600      16        A000 ATI EGA Wonder, VGA Wonder
  1018.      = G  100x42  8x14    800x600      16        A000 ATI Ultra 8514A, ATI XL
  1019.      = G        800x600     256        A000 Oak VGA    
  1020.      = G  100x37  8x16    800x600     256        A000 Oak OTI-067/077 chips [8]
  1021.  55h = T   80x66  8x8         16/256k    A000 ATI VIP
  1022.      = T  132x25  8x14                     Paradise EGA-480
  1023.      = T  132x25  8x14                     NEL Electronics BIOS
  1024.      = T  132x25  7x16         16/256k    B800 Paradise VGA
  1025.      = T  132x25  8x16         16/256k    B800 Paradise VGA on multisync
  1026.      = T  132x25                     Taxan 565 EGA
  1027.      = T  132x25                     AST VGA Plus
  1028.      = T  132x25                     Hewlett-Packard D1180A
  1029.      = T  132x25  7x16          16             AT&T VDC600
  1030.      = T  132x25  8x16          16        A000 NCR 77C22 [9]
  1031.      = T  132x25  9x16 1188x400     16/256k    B800 WD90C
  1032.      = T  132x25  9x16          16        B800 Diamond Speedstar 24X
  1033.      = T  132x25  8x14  1056x350  16/256k         Cirrus CL-GD5420/5422/5426
  1034.      = T  132x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  1035.      = G   94x29  8x14    752x410                 Lava Chrome II EGA
  1036.      = G  128x48  8x16 1024x768     16/256k    A000 ATI VGA Wonder v4+     [5]
  1037.      = G           1024x768     16/256k         ATI VGA Wonder Plus
  1038.      = G           1024x768     16/256k         ATI Ultra 8514A,ATI XL
  1039.      = G  128x48  8x16 1024x768       4        A000 Oak OTI-067/077 chips [8]
  1040.  56h = T  132x43  8x8           3???       2    B000 NSI Smart EGA+
  1041.      = T  132x43  7x9           4        B000 Paradise VGA
  1042.      = T  132x43  8x9           4        B000 Paradise VGA on multisync
  1043.      = T  132x43         mono             Taxan 565 EGA
  1044.      = T  132x43  7x9           2             AT&T VDC600
  1045.      = T  132x43  9x8                     NEL Electronics BIOS
  1046.      = T  132x50  8x8           4        A000 NCR 77C22 [9]
  1047.      = T  132x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  1048.      = G           1024x768      16        A000 Oak VGA
  1049.      = G  128x48  8x16 1024x768      16        A000 Oak OTI-067/077 chips [8]
  1050.  57h = T  132x25  8x14           3???       4    B000 NSI Smart EGA+
  1051.      = T  132x25  7x16           4        B000 Paradise VGA
  1052.      = T  132x25  8x16           4        B000 Paradise VGA on multisync
  1053.      = T  132x25  9x14                     NEL Electronics BIOS
  1054.      = T  132x25         mono             Taxan 565 EGA
  1055.      = T  132x25  7x16           2             AT&T VDC600
  1056.      = T  132x25  9x14         16/256k    B800 Trident TVGA 8800/8900
  1057.      = T  132x25  8x16           4        A000 NCR 77C22 [9]
  1058.      = G   96x48  8x16    768x1024  16        A000 Oak OTI-067/077 chips [8]
  1059.  58h = T   80x33  8x14          16        B800 ATI EGA Wonder,ATI VIP
  1060.      = T   80x32  9x16          16             Genoa 6400
  1061.      = T   80x43  8x8                     NEL Electronics BIOS
  1062.      = T  132x30  9x16         16/256k    B800 Trident TVGA 8800/8900
  1063.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA
  1064.      = G  100x75  8x8    800x600      16             AT&T VDC600
  1065.      = G  100x75  8x8    800x600      16        A000 NCR 77C22 [9]
  1066.      = G  100x75  8x8    800x600      16             Diamond Speedstar 24X
  1067.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA, WD90C
  1068.      = G        800x600      16             AST VGA Plus, Compaq VGA
  1069.      = G        800x600      16             Dell VGA
  1070.      = G        800x600      16             Hewlett-Packard D1180A
  1071.      = G        800x600     ???             ELT VGA PLUS 16
  1072.      = G  100x37  8x16  800x600  16/256k    A000 Cirrus CL-GD5420/5422/5426
  1073.      = G  160x64  8x16 1280x1024  16        A000 Oak OTI-077 chipset [8]
  1074.  59h = T   80x43  9x8                     NEL Electronics BIOS
  1075.      = T   80x66  8x8         16/256k    A000 ATI VIP
  1076.      = T  132x43  9x11         16/256k    B800 Trident TVGA 8800/8900
  1077.      = G  100x75  8x8    800x600       2        A000 Paradise VGA
  1078.      = G  100x75  8x8    800x600       2             AT&T VDC600
  1079.      = G        800x600       2             AST VGA Plus, Compaq VGA
  1080.      = G        800x600       2             Dell VGA
  1081.      = G        800x600       2             Hewlett-Packard D1180A
  1082.      = G  100x75  8x8    800x600       2        A000 NCR 77C22 [9]
  1083.      = G  128x48  8x16 1024x768     256        A000 Oak OTI-077 chipset [8]
  1084.  5Ah = T   80x60  8x8                     NEL Electronics BIOS
  1085.      = T  132x60  9x8         16/256k    B800 Trident TVGA 8800/8900
  1086.      = G  128x48  8x16 1024x768       2        A000 NCR 77C22 [9]
  1087.  5Bh = T   80x30  8x16                B800 ATI VGA Wonder (undoc)
  1088.      = G        640x350     256             Genoa 6400
  1089.      = G   80x25  8x16    640x400      32K        A000 Oak OTI-067/077 chips [8]
  1090.      = G        800x600      16             Maxxon, SEFCO TVGA, Imtec
  1091.      = G  100x75  8x8    800x600     16/256k    A000 Trident TVGA 8800, 8900
  1092.      = G        800x600     ???             Vobis MVGA
  1093.      = G  100x37  8x16    800x600                 NEL Electronics BIOS
  1094.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [1,9]
  1095.  5Ch = T  100x37  8x16                     NEL Electronics BIOS
  1096.      = G        640x400     256             Logix, ATI Prism Elite
  1097.      = G        640x400     256             Maxxon, SEFCO TVGA, Imtec
  1098.      = G   80x25  8x16    640x400     256/256k    A000 Zymos Poach, Hi Res 512
  1099.      = G   80x25  8x16    640x400     256/256k    A000 Trident TVGA 8800/8900
  1100.      = G   80x30  8x16    640x480     256             Genoa 6400
  1101.      = G   80x30  8x16    640x480      32K        A000 Oak OTI-077 chipset [8]
  1102.      = G  100x75  8x8    800x600     256        A000 NCR 77C22 [9]
  1103.      = G  100x75  8x8    800x600     256/256k    A000 WD90C
  1104.      = G  100x75  8x8    800x600     256/256k    A000 Diamond Speedstar 24X
  1105.      = G  100x37  8x16  800x600  256/256k    A000 Cirrus CL-GD5420/5422/5426
  1106.  5Dh = T  100x75  8x8                     NEL Electronics BIOS
  1107.      = G        640x480     256             Logix, ATI Prism Elite
  1108.      = G        640x480     256             Maxxon, SEFCO TVGA, Imtec
  1109.      = G   80x30  8x16    640x480     256/256k    A000 Zymos Poach, Hi Res 512
  1110.      = G   80x30  8x16    640x480     256/256k    A000 Trident TVGA 8800 (512K)
  1111.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [9]
  1112.      = G  128x48  8x16 1024x768      16/256k    A000 WD90C
  1113.      = G  128x48  8x16 1024x768      16             Diamond Speedstar 24X
  1114.      = G  128x48  8x16 1024x768  16/256k    A000 Cirrus CL-GD5420/5422/5426
  1115.  5Eh = G        640x400     256             Paradise VGA,VEGA VGA
  1116.      = G        640x400     256             AST VGA Plus, NCR 77C22
  1117.      = G        640x400     256             Compaq VGA, Dell VGA
  1118.      = G   80x25  8x16    640x400     256             AT&T VDC600
  1119.      = G   80x25  8x16    640x400     256        A000 NCR 77C22 [9]
  1120.      = G   80x25  8x16    640x400     256/256k    A000 WD90C
  1121.      = G   80x25  8x16    640x400  256/256k    A000 Diamond Speedstar 24X
  1122.      = G        800x600      16             Logix, ATI Prism Elite
  1123.      = G  100x37  8x16    800x600      16             NEL Electronics BIOS
  1124.      = G  100x75  8x8    800x600     256             Genoa 6400
  1125.      = G  100x75  8x8    800x600     256/256k    A000 Zymos Poach, Trident 8900
  1126.      = G  100x75  8x8    800x600     256/256k    A000 Hi Res 512
  1127.  5Fh = G        640x480     256             Paradise VGA
  1128.      = G        640x480     256             AST VGA Plus, NCR 77C22
  1129.      = G        640x480     256             Compaq VGA, Dell VGA
  1130.      = G        640x480     256             Hewlett-Packard D1180A
  1131.      = G   80x30  8x16    640x480     256             AT&T VDC600 (512K)
  1132.      = G   80x30  8x16    640x480     256        A000 NCR 77C22 [9]
  1133.      = G   80x30  8x16    640x480     256/256k    A000 WD90C
  1134.      = G   80x30  8x16    640x480     256/256k    A000 Diamond Speedstar 24X
  1135.      = G   80x30  8x16  640x480  256/256k    A000 Cirrus CL-GD5420/5422/5426
  1136.      = G           1024x768      16             Logix, ATI Prism Elite
  1137.      = G           1024x768      16             Maxxon, Imtec
  1138.      = G  128x48  8x16 1024x768      16             Genoa 6400
  1139.      = G  128x48  8x16 1024x768      16/256k    A000 Zymos Poach, Hi Res 512
  1140.      = G  128x48  8x16 1024x768      16/256k    A000 Trident TVGA 88/8900 512K
  1141.  60h = T  132x25  8x14          16/64       8    B800 Quadram Ultra VGA
  1142.      = T  132x25  8x14          16             Genoa 6400
  1143.      = T  132x25  8x14          16             Genoa SuperEGA BIOS 3.0+
  1144.      = T  132x25                     Cirrus 5320 chipset
  1145.      = G   80x???    ???x400                 Corona/Cordata BIOS 4.10+
  1146.      = G   80x25  8x16    640x400     256       1    A000 Ahead A, Ahead B
  1147.      = G        752x410                 VEGA VGA
  1148.      = G        752x410      16             Tatung VGA
  1149.      = G        752x410      16             Video7 V-RAM VGA
  1150.      = G  128x48  8x16 1024x768       4/256k    A000 Trident TVGA 8900
  1151.      = G  128x48  8x16 1024x768     256/256k    A000 WD90C
  1152.      = G  128x48  8x16 1024x768     256/256k    A000 Diamond Speedstar 24X
  1153.      = G  128x48  8x16 1024x768  256/256k    A000 Cirrus CL-GD5420/5422/5426
  1154.  61h = T  132x29  8x12          16/64       8    B800 Quadram Ultra VGA
  1155.      = T  132x29  8x8          16             Genoa 6400
  1156.      = T  132x29  8x8          16             Genoa SuperEGA BIOS 3.0+
  1157.      = T  132x50                     Cirrus 5320 chipset
  1158.      = G        ???x400                 Corona/Cordata BIOS 4.10+
  1159.      = G   80x25  8x16    640x400     256        A000 ATI VGA Wonder,VGA Wonder+
  1160.      = G   80x25  8x16    640x400     256        A000 ATI Ultra 8514A,ATI XL
  1161.      = G   80x30  8x16    640x480     256       1    A000 Ahead A, Ahead B (512K)
  1162.      = G        720x540                 VEGA VGA
  1163.      = G        720x540      16             Tatung VGA
  1164.      = G        720x540      16             Video7 V-RAM VGA
  1165.      = G   96x64  8x16    768x1024  16/256k    A000 Trident TVGA 88/8900 512K
  1166.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [1,9]
  1167.  62h = T  132x32  8x11          16/64       6    B800 Quadram Ultra VGA
  1168.      = T  132x32  8x12          16             Genoa 6400
  1169.      = T  132x32  8x11          16             Genoa SuperEGA BIOS 3.0+
  1170.      = G        640x450      16             Cirrus 510/520 chipset
  1171.      = G   80x30  8x16    640x480     256        A000 ATI VGA Wonder,VGA Wonder+
  1172.      = G   80x30  8x16    640x480     256        A000 ATI Ultra 8514A,ATI XL
  1173.      = G   80x30  8x16    640x480     32K        A000 WD90C
  1174.      = G   80x30  8x16    640x480     32K        A000 Diamond Speedstar 24X
  1175.      = G        800x600                 VEGA VGA
  1176.      = G        800x600      16             Tatung VGA
  1177.      = G        800x600      16             Video7 V-RAM VGA
  1178.      = G  100x75  8x8    800x600     256       1    A000 Ahead A, Ahead B (512K)
  1179.      = G  128x48  8x16 1024x768     256/256k    A000 Trident TVGA 8900, Zymos
  1180.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [9]
  1181.  63h = T  132x44  8x8          16/64       5    B800 Quadram Ultra VGA
  1182.      = T  132x44  8x8          16             Genoa 6400
  1183.      = T  132x44  8x8          16             Genoa SuperEGA BIOS 3.0+
  1184.      = G        720x540      16             MORSE VGA
  1185.      = G        720x540      16             Cirrus 510/520 chipset
  1186.      = G  100x42  8x14    800x600     256        A000 ATI VGA Wonder,VGA Wonder+
  1187.      = G  100x42  8x14    800x600     256        A000 ATI Ultra 8514A,ATI XL
  1188.      = G        800x600     32K        A000 WD90C
  1189.      = G        800x600     32K        A000 Diamond Speedstar 24X
  1190.      = G  128x48  7x16 1024x768     256       1    A000 Ahead B (1MB)
  1191.      = G           1024x768       2             Video7 V-RAM VGA
  1192.  64h = T  132x60  8x8          16             Genoa 6400
  1193.      = G    -      -    640x480  64K        A000 Cirrus CL-GD 5422/5426
  1194.      = G        800x600      16             MORSE VGA
  1195.      = G        800x600      16             Cirrus 510/520 chipset
  1196.      = G        800x600     ???             SAMPO-Mira VGA
  1197.      = G           1024x768       4             Video7 V-RAM VGA
  1198.      = G  128x48  8x16 1024x768     256        A000 ATI VGA Wonder Plus,ATI XL
  1199.      = G  160x64  8x16 1280x1024 16/256k    A000 WD90C [1]
  1200.      = G  160x64  8x16 1280x1024 16/256k    A000 Diamond Speedstar 24X [1]
  1201.  65h = G    -      -    800x600  64K        A000 Cirrus CL-GD 5422/5426
  1202.      = G           1024x768      16             Video7 V-RAM VGA
  1203.      = G  128x48  8x16 1024x768      16        A000 ATI VGA Wonder
  1204.  66h = T   80x50  8x8    640x400     16/256k    B800 WD90C
  1205.      = T   80x50  8x8          16        B800 Diamond Speedstar 24X
  1206.      = G        640x400     256             Tatung VGA
  1207.      = G        640x400     256             Video7 V-RAM VGA
  1208.      = G    -      -    640x480  32K        A000 Cirrus CL-GD 5422/5426
  1209.  67h = T   80x43  8x8    640x344     16/256k    B800 WD90C
  1210.      = T   80x43  8x8          16        B800 Diamond Speedstar 24X
  1211.      = G        640x480     256             Video7 V-RAM VGA
  1212.      = G    -      -    800x600  32K        A000 Cirrus CL-GD 5422/5426
  1213.      = G  128x48  8x16 1024x768       4        A000 ATI VGA Wonder
  1214.      = G  160x64  8x16 1280x1024  16        A000 NCR 77C22 [1,9]
  1215.  69h = T  132x50  8x8  1056x400     16/256k    B800 WD90C
  1216.      = T  132x50  8x8          16        B800 Diamond Speedstar 24X
  1217.      = G        720x540     256             Video7 V-RAM VGA
  1218.  6Ah = G        800x600      16        A000 VESA standard interface
  1219.      = G  100x75  8x8    800x600      16             Genoa 6400
  1220.      = G  100x75  8x8    800x600      16             Diamond Speedstar 24X
  1221.      = G        800x600      16        A000 Ahead A
  1222.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (VESA) (see 71h)
  1223.      = G        800x600      16             Zymos Poach, Hi Res 512
  1224.      = G        800x600      16             Epson LT-386SX in CRT Mode
  1225.      = G        800x600      16             Compuadd 316SL in CRT Mode
  1226.      = G  100x37  8x16  800x600  16/256k    A000 Cirrus CL-GD5420/5422/5426
  1227.      = G  100x42  8x14    800x600            A000 ATI VGA Wonder (undoc)
  1228.      = G  160x64  8x16 1280x1024 256        A000 NCR 77C22 [1,9]
  1229.  6Bh = T  100x37  8x16          16             Genoa 6400
  1230.      = T  100x37  8x16                     NEL Electronics BIOS
  1231.  6Ch = G   80x30  8x16  640x480   16M        A000 Trident 8900CL/BIOS C04
  1232.      = G  100x75  8x8    800x600     256             Genoa 6400
  1233.      = G  160x60  8x16 1280x960     16/256k    A000 WD90C [1]
  1234.      = G  160x60  8x16 1280x960     16/256k    A000 Diamond Speedstar 24X [1]
  1235.      = G  160x64  8x16 1280x1024 16/256k    A000 Cirrus CL-GD 5422/5426 [1]
  1236.  6Dh = G  160x64  8x16 1280x1024 256/256k    A000 Cirrus CL-GD 5422/5426 [1]
  1237.  6Fh = G   40x25  8x8   320x200   64K        A000 Cirrus CL-GD 5422/5426
  1238.  70h =     extended mode set (see AX=0070h)         Everex Micro Enhancer EGA
  1239.      = T   40x25  8x8          16       8    B800 Quadram (CGA double scan)
  1240.      = T   40x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1241.  6Fh = G   40x25  8x8   320x200   16M        A000 Cirrus CL-GD 5422/5426
  1242.      = G        360x480     256             Cirrus 510/520/5320 chips
  1243.      = G   90x28  8x14    720x392      16       1    A000 Ahead B
  1244.      = G        800x600      16             C&T chipset, Cardinal
  1245.  71h = T   80x25  8x8          16       8    B800 Quadram (CGA double scan)
  1246.      = T   80x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1247.      = G        528x400     256             Cirrus 510/520 chipset
  1248.      = G   80x30  8x16  640x480   16M        A000 Cirrus CL-GD 5422/5426
  1249.      = G  100x35  8x16    800x600     16of64        A000 NSI Smart EGA+
  1250.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (same as 6Ah)
  1251.      = G        960x720      16             C&T chipset, Cardinal
  1252.  72h = T   80x60  8x8          16        B800 Quadram Ultra VGA
  1253.      = T   80x60  8x8          16        B800 Genoa 6400
  1254.      = T   80x60  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1255.      = G        528x480     256             Cirrus 510/520 chipset
  1256.      = G        640x480 32768        A000 ATI
  1257.      = G        640x480     16M        A000 WD90C
  1258.      = G        640x480     16M        A000 Diamond Speedstar 24X
  1259.      = G           1024x768      16             C&T chipset, Cardinal
  1260.  73h = G   80x60  8x8    640x480      16        A000 Quadram Ultra VGA
  1261.      = G   80x60  8x8    640x480      16             Genoa 6400
  1262.      = G   80x60  8x8    640x480      16             Genoa SuperEGA BIOS 3.0+
  1263.  74h = T   80x66  8x8          16        B800 Quadram Ultra VGA
  1264.      = T   80x66  8x8          16        B800 Genoa 6400
  1265.      = T   80x66  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1266.      = G        640x400       2        B800 Toshiba 3100 AT&T mode
  1267.      = G   80x30  8x16  640x480   32K        A000 Trident 8900C/BIOS C03
  1268.      = G  128x48  8x16 1024x768      16       1    A000 Ahead A, Ahead B (512K)
  1269.      = G     -     -   1024x768   64K        A000 Cirrus CL-GD 5422/5426 [1]
  1270.  75h = G   80x30  8x16  640x480   64K        A000 Trident 8900C/BIOS C03
  1271.      = G   80x66    640x528      16???        A000 Quadram Ultra VGA
  1272.      = G   80x66    640x528      16             Genoa SuperEGA BIOS 3.0+
  1273.      = G  128x48  8x16 1024x768       4       1    A000 Ahead B
  1274.  76h = T   94x29  8x14          16        B800 Quadram Ultra VGA
  1275.      = T   94x29  8x14                     Genoa SuperEGA BIOS 3.0+
  1276.      = G  100x75  8x8   800x600   32K        A000 Trident 8900C/BIOS C03
  1277.      = G  128x48  8x16 1024x768       2       1    A000 Ahead B
  1278.  77h = G   94x29    752x410      16???        A000 Quadram Ultra VGA
  1279.      = G   94x29    752x410      16             Genoa SuperEGA BIOS 3.0+
  1280.      = G  100x75  8x8   800x600   64K        A000 Trident 8900C/BIOS C03
  1281.  78h = T  100x37  8x16          16             Genoa 6400
  1282.      = T  100x75  8x8          16        B800 Quadram Ultra VGA
  1283.      = T  100x75  8x8                     Genoa SuperEGA BIOS 3.0+
  1284.      = G        640x400     256             STB VGA/EM-16 Plus
  1285.      = G        640x400     256             Cardinal, C&T chipset
  1286.      = G        640x400     256             Cirrus 5320 chipset
  1287.  79h = G        640x480     256             Cardinal, C&T chipset
  1288.      = G  100x75    800x600      16???        A000 Quadram Ultra VGA
  1289.      = G  100x75  8x8    800x600      16             Genoa SuperEGA BIOS 3.0+
  1290.      = G  100x75  8x8    800x600      16             Genoa 6400
  1291.  7Ah = T  114x60  8x8          16        B800 Quadram Ultra VGA
  1292.      = T  114x60  8x8                     Genoa SuperEGA BIOS 3.0+
  1293.      = G        720x540     256             C&T chipset, Cardinal
  1294.  7Bh = G        800x600     256             C&T chipset, Cardinal
  1295.      = G  114x60    912x480      16???        A000 Quadram Ultra VGA
  1296.      = G        912x480      16             Genoa SuperEGA BIOS 3.0+
  1297.  7Ch = G        512x512      16             Genoa
  1298.  7Dh = G   64x32  8x16    512x512     256             Genoa
  1299.  7Eh =     special mode set (see AX=007Eh)         Paradise VGA, AT&T VDC600
  1300.      = G   80x25  8x16    640x400     256             Genoa 6400
  1301.  7Fh =     special function set (see AX=007Fh)         Paradise VGA, AT&T VDC600
  1302.      = G  128x48  8x16 1024x768       4             Genoa 6400
  1303.  82h = T   80x25         B&W             AT&T VDC overlay mode [6]
  1304.  83h = T   80x25                     AT&T VDC overlay mode [6]
  1305.  86h = G        640x200     B&W             AT&T VDC overlay mode [6]
  1306.  88h = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  1307.  C0h = G        640x400     2/prog pallet         AT&T VDC overlay mode [6]
  1308.  C4h =     disable output                     AT&T VDC overlay mode [6]
  1309.  D0h = G        640x400       2        B800 DEC VAXmate AT&T mode
  1310. Notes:
  1311. [1] interlaced only
  1312. [2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  1313.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  1314.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  1315.       color) 132x25 character mode.
  1316.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  1317.       resident
  1318. [3] early XGA boards support 132-column text but do not have this BIOS mode
  1319. [4] DESQview intercepts calls to change into these two modes (21h is page 0,
  1320.       22h is page 1) even if there is no Hercules graphics board installed
  1321. [5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  1322. [6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  1323.       40h, or 44h
  1324. [7] BIOS text support is broken in this undocumented mode; scrolling moves only
  1325.       about 1/3 of the screen (and does even that portion incorrectly), while
  1326.       screen clears only clear about 3/4.
  1327. [8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
  1328.       may choose to use only partially or not at all; thus, not all Oak boards
  1329.       support all "Oak" modes listed here
  1330. [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
  1331.       precluding the use of a monochrome adapter in the same system
  1332. [10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
  1333.       v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
  1334.       09/14/90 version
  1335. Index:    video modes
  1336. --------V-100070-----------------------------
  1337. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  1338.     AX = 0070h
  1339.     BL = mode (see below)
  1340. Desc:    specify a proprietary display mode on the Everex Micro Enhancer or
  1341.       Viewpoint video adapters
  1342. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  1343.  
  1344. Values for video mode:
  1345.       text/ text pixel     pixel    colors    disp    scrn  monitor    adapter
  1346.       grph resol  box    resoltn        page    addr
  1347.  00h = G        640x480      16             multsync    EGA,VGA
  1348.  01h = G        752x410      16             multsync    EGA,VGA
  1349.  02h = G        800x600      16             multsync    EGA,VGA
  1350.  03h = T   80x34                     multsync    EGA,VGA
  1351.  04h = T   80x60                     multsync    EGA,VGA
  1352.  05h = T   94x29                     multsync    EGA only
  1353.  06h = T   94x51                     multsync    EGA only
  1354.  07h = T  100x43  8x14          16                VGA only
  1355.  08h = T  100x75  8x8          16                VGA only
  1356.  09h = T   80x44                     EGA    EGA only
  1357.  0Ah = T  132x25                     EGA    EGA,VGA
  1358.  0Bh = T  132x44                     EGA    EGA,VGA
  1359.  0Ch = T  132x25                     CGA    EGA only
  1360.  0Dh = T   80x44                     mono    EGA only
  1361.  0Eh = T  132x25                     mono
  1362.  0Fh = T  132x44                     mono
  1363.  10h =     reserved
  1364.  11h = G           1280x350       4                EGA only
  1365.  12h = G           1280x600       4                EGA only
  1366.  13h = G        640x350     256                EGA,EV673
  1367.  14h = G        640x400     256
  1368.  15h = G        512x480     256
  1369.  16h = T   80x30  8x16         256                VGA only
  1370.  18h = T  100x27  8x16          16                VGA only
  1371.  20h = G           1024x768      16                Everex 629,678
  1372.                                 Everex EV-673
  1373.  21h = T  160x64  8x16 1280x1024  16                1MB VGA only
  1374.  30h = G        640x480     256                Everex 629,678
  1375.                                 Everex EV-673
  1376.  31h = G        800x600     256                Everex 629,678
  1377.                                 Everex EV-673
  1378.  32h = G  128x48  8x16 1024x768     256                1MB VGA only
  1379.  40h = T  132x30  8x16          16                VGA only
  1380.  50h = T  132x32  8x16         mono                VGA only
  1381.  62h = G   40x25  8x8    320x200     32K                Vwpt TC (EV629)
  1382.  70h = G   64x30  8x16    512x480     32K                Viewpoint TC
  1383.  71h = G   80x30  8x16    640x480     32K                Viewpoint TC
  1384.  76h = G   64x30  8x16    512x480     16M                Viewpoint TC
  1385.  77h = G   80x30  8x16    640x480     16M                Viewpoint TC
  1386. Index:    video modes
  1387. --------V-10007E-----------------------------
  1388. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  1389.     AX = 007Eh
  1390.     BX = horizontal dimension of the mode desired
  1391.     CX = vertical dimension of the mode desired
  1392.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  1393.     DX = number of colors of the mode desired (0000h for monochrome modes)
  1394. Return: BH = 7Eh if successful (Paradise VGA)
  1395.     AL = 7Eh if successful (AT&T VDC600)
  1396. Desc:    specify a display mode by resolution rather than mode number
  1397. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  1398. Index:    video modes
  1399. --------V-10007F-----------------------------
  1400. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  1401.     AX = 007Fh
  1402.     BH = function
  1403.         00h     set VGA operation
  1404.         01h     set non-VGA operation
  1405.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
  1406.         monochrome mode 7 will set non-VGA MDA/Hercules operation
  1407.         02h     query mode status
  1408.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
  1409.             CH = total video RAM size in 64k byte units
  1410.             CL = video RAM used by the current mode
  1411.         03h     lock current mode
  1412.         allows current mode (VGA or non-VGA) to survive re-boot
  1413.         04h     enter CGA mode (AT&T VDC600 only)
  1414.         05h     enter MDA mode (AT&T VDC600 only)
  1415.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  1416.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1417.         BL = value to set in the paradise register
  1418.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  1419.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1420.         Return: BL = value of the paradise register
  1421.             BH = 7Fh if successful
  1422. Return: AL = 7Fh if successful (AT&T VDC600)
  1423. Desc:    set emulation mode or access proprietary extended data registers
  1424. SeeAlso: AX=007Eh
  1425. --------V-1001-------------------------------
  1426. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  1427.     AH = 01h
  1428.     CH = bit 7    should be zero
  1429.          bits 6,5 cursor blink
  1430.              (00=normal, 01=invisible, 10=erratic, 11=slow)
  1431.              (00=normal, other=invisible on EGA/VGA)
  1432.          bits 4-0 top scan line containing cursor
  1433.     CL = bottom scan line containing cursor (bits 0-4)
  1434. Desc:    specify the starting and ending scan lines to be occupied by the
  1435.       hardware cursor in text modes
  1436. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  1437.       returns unmapped cursor shape
  1438.     UltraVision scales size to the current font height by assuming 14-line
  1439.       monochrome and 8-line color fonts; this call is not valid if cursor
  1440.       emulation has been disabled
  1441.     applications which wish to change the cursor by programming the
  1442.       hardware directly on EGA or above should call INT 10/AX=1130h or
  1443.       read 0040h:0085h first to determine the current font height
  1444. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  1445.       is not equal to the current video mode
  1446. SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h
  1447. --------V-1002-------------------------------
  1448. INT 10 - VIDEO - SET CURSOR POSITION
  1449.     AH = 02h
  1450.     BH = page number
  1451.         0-3 in modes 2&3
  1452.         0-7 in modes 0&1
  1453.         0 in graphics modes
  1454.     DH = row (00h is top)
  1455.     DL = column (00h is left)
  1456. SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh
  1457. --------V-1003-------------------------------
  1458. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  1459.     AH = 03h
  1460.     BH = page number
  1461.         0-3 in modes 2&3
  1462.         0-7 in modes 0&1
  1463.         0 in graphics modes
  1464. Return: AX = 0000h (Phoenix BIOS)
  1465.     CH = start scan line
  1466.     CL = end scan line
  1467.     DH = row (00h is top)
  1468.     DL = column (00h is left)
  1469. Notes:    a separate cursor is maintained for each of up to 8 display pages
  1470.     many ROM BIOSes incorrectly return the default size for a color display
  1471.       (start 06h, end 07h) when a monochrome display is attached
  1472. SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h
  1473. --------V-1004-------------------------------
  1474. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  1475.     AH = 04h
  1476. Return: AH = light pen trigger flag
  1477.         00h not down/triggered
  1478.         01h down/triggered
  1479.         DH,DL = row,column of character light pen is on
  1480.         CH = pixel row (graphics modes 04h-06h)
  1481.         CX = pixel row (graphics modes with >200 rows)
  1482.         BX = pixel column
  1483. Desc:    determine the current position and status of the light pen (if
  1484.       present)
  1485. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  1486.       column modes) or 4 (640-column modes)
  1487.     returned row numbers are only accurate to two lines
  1488. --------V-1005-------------------------------
  1489. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  1490.     AH = 05h
  1491.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  1492. Desc:    specify which of possibly multiple display pages will be visible
  1493. Note:    to determine whether the requested page actually exists, use AH=0Fh
  1494.       to query the current page after making this call
  1495. SeeAlso: AH=0Fh,AH=43h,AH=45h
  1496. --------V-1005-------------------------------
  1497. INT 10 - VIDEO - PCjr - MANIPULATE CRT/CPU PAGE REGISTERS
  1498.     AH = 05h
  1499.     AL = subfunction
  1500.         80h read CRT and CPU page registers
  1501.         Return: BH = CRT page register
  1502.             BL = CPU page register
  1503.         81h set CPU page register
  1504.         BL = CPU page
  1505.         82h set CRT page register
  1506.         BH = CRT page
  1507.         83h set both CPU and CRT page registers
  1508.         BL = CPU page
  1509.         BH = CRT page
  1510. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1511.       memory will be mapped at B800h by the hardware
  1512.     the CRT page determines the start address of the memory used by the
  1513.       video controller
  1514. --------V-1005-------------------------------
  1515. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GRAPHICS BITMAP BUFFER
  1516.     AH = 05h
  1517.     AL = function
  1518.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  1519.         BX = segment of buffer
  1520.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  1521.         Return: DX = segment of graphics bitmap buffer
  1522. --------V-1006-------------------------------
  1523. INT 10 - VIDEO - SCROLL UP WINDOW
  1524.     AH = 06h
  1525.     AL = number of lines by which to scroll up (00h = clear entire window)
  1526.     BH = attribute used to write blank lines at bottom of window
  1527.     CH,CL = row,column of window's upper left corner
  1528.     DH,DL = row,column of window's lower right corner
  1529. Note:    affects only the currently active page (see AH=05h)
  1530. Warning: some implementations have a bug which destroys BP
  1531. SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
  1532. --------V-1007-------------------------------
  1533. INT 10 - VIDEO - SCROLL DOWN WINDOW
  1534.     AH = 07h
  1535.     AL = number of lines by which to scroll down (00h=clear entire window)
  1536.     BH = attribute used to write blank lines at top of window
  1537.     CH,CL = row,column of window's upper left corner
  1538.     DH,DL = row,column of window's lower right corner
  1539. Note:    affects only the currently active page (see AH=05h)
  1540. Warning: some implementations have a bug which destroys BP
  1541. SeeAlso: AH=06h,AH=72h,AH=73h,INT 50/AX=0014h
  1542. --------V-1008-------------------------------
  1543. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1544.     AH = 08h
  1545.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1546. Return: AH = charater's attribute (see below)
  1547.     AL = character
  1548. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  1549.       underlined 
  1550.     the blink bit may be reprogrammed to enable intense background colors
  1551.       using AX=1003h or by programming the CRT controller
  1552.     the foreground intensity bit (3) can be programmed to switch between
  1553.       character sets A and B on EGA and VGA cards, thus enabling 512
  1554.       simultaneous characters on screen.  In this case the bit's usual
  1555.       function (intensity) is regularly turned off.
  1556. SeeAlso: AH=09h,AX=1003h,AX=5001h
  1557.  
  1558. Bitfields for character's attribute:
  1559.  bit 7    blink
  1560.  bits 6-4  background color
  1561.         000 black    100 red
  1562.         001 blue    101 magenta
  1563.         010 green    110 brown
  1564.         011 cyan    111 white  
  1565.  bits 3-0  foreground color
  1566.         0000 black     1000 dark gray
  1567.         0001 blue     1001 light blue
  1568.         0010 green     1010 light green
  1569.         0011 cyan     1011 light cyan
  1570.         0100 red     1100 light red
  1571.         0101 magenta     1101 light magenta
  1572.         0110 brown     1110 yellow
  1573.         0111 light gray     1111 white
  1574. --------V-1009-------------------------------
  1575. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1576.     AH = 09h
  1577.     AL = character to display
  1578.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1579.     BL = attribute (text mode) or color (graphics mode)
  1580.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1581.     CX = number of times to write character
  1582. Notes:    all characters are displayed, including CR, LF, and BS
  1583.     replication count in CX may produce an unpredictable result in graphics
  1584.       modes if it is greater than the number of positions remaining in the
  1585.       current row
  1586. SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F,INT 43,INT 44
  1587. --------V-100A-------------------------------
  1588. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  1589.     AH = 0Ah
  1590.     AL = character to display
  1591.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1592.     BL = attribute (PCjr only) or color (graphics mode)
  1593.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1594.     CX = number of times to write character
  1595. Notes:    all characters are displayed, including CR, LF, and BS
  1596.     replication count in CX may produce an unpredictable result in graphics
  1597.       modes if it is greater than the number of positions remaining in the
  1598.       current row
  1599. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1600. --------V-100B--BH00-------------------------
  1601. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1602.     AH = 0Bh
  1603.     BH = 00h
  1604.     BL = background/border color (border only in text modes)
  1605. SeeAlso: AH=0Bh/BH=01h
  1606. --------V-100B--BH01-------------------------
  1607. INT 10 - VIDEO - SET PALETTE
  1608.     AH = 0BH
  1609.     BH = 01h
  1610.     BL = palette ID
  1611.         00h background, green, red, and brown/yellow
  1612.         01h background, cyan, magenta, and white
  1613. SeeAlso: AH=0Bh/BH=00h
  1614. --------V-100C-------------------------------
  1615. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1616.     AH = 0Ch
  1617.     BH = page number
  1618.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1619.     CX = column
  1620.     DX = row
  1621. Desc:    set a single pixel on the display in graphics modes
  1622. Notes:    valid only in graphics modes
  1623.     BH is ignored if the current video mode supports only one page
  1624. SeeAlso: AH=0Dh,AH=46h
  1625. --------V-100D-------------------------------
  1626. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1627.     AH = 0Dh
  1628.     BH = page number
  1629.     CX = column
  1630.     DX = row
  1631. Return: AL = pixel color
  1632. Desc:    determine the current color of the specified pixel in grahics modes
  1633. Notes:    valid only in graphics modes
  1634.     BH is ignored if the current video mode supports only one page
  1635. SeeAlso: AH=0Ch,AH=47h
  1636. --------V-100E-------------------------------
  1637. INT 10 - VIDEO - TELETYPE OUTPUT
  1638.     AH = 0Eh
  1639.     AL = character to write
  1640.     BH = page number
  1641.     BL = foreground color (graphics modes only)
  1642. Desc:    display a character on the screen, advancing the cursor and scrolling
  1643.       the screen as necessary
  1644. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1645.       and do the expected things
  1646.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1647.       the current active page
  1648. SeeAlso: AH=02h,AH=0Ah
  1649. --------V-100F-------------------------------
  1650. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1651.     AH = 0Fh
  1652. Return: AH = number of character columns
  1653.     AL = display mode (see AH=00h)
  1654.     BH = active page (see AH=05h)
  1655. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1656.       also have bit 7 set
  1657.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1658.       (monochrome) in all extended-row text modes
  1659. SeeAlso: AH=00h,AH=05h,AX=10F2h/BL=00h,AX=1130h,AX=CD04h
  1660. --------V-100F56BX4756-----------------------
  1661. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1662.     AX = 0F56h
  1663.     BX = 4756h
  1664.     CX = 4944h
  1665.     DL = function
  1666.         01h installation check
  1667.         Return: AX = 5649h
  1668.             BX = 4443h
  1669.             CX = 5647h
  1670.             DH = 01h
  1671.         02h get first video mode's parameters
  1672.         Return: AX = BIOS mode number
  1673.             BX = width in pixels
  1674.             CX = height in pixels
  1675.             DX = number of colors
  1676.         03h get next video mode's parameters
  1677.         Return: as for DL=02h
  1678.         04h display line???
  1679.         ES:DI -> record (see below)
  1680.         ???
  1681.         Return: ???
  1682. Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1683. Note:    the use of TSR display drivers was discontinued after v2.20
  1684. Index:    installation check;VUIMAGE display driver
  1685.  
  1686. Format of record for DL=04h:
  1687. Offset    Size    Description
  1688.  00h    WORD    row number
  1689.  02h    WORD    starting column???
  1690.  04h    WORD    ending column???
  1691.     ???
  1692. --------V-100F--SIF123-----------------------
  1693. INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
  1694.     AH = 0Fh
  1695.     SI = F123h
  1696.     DI = 321Fh
  1697. Return: AH = number of character columns
  1698.     AL = display mode (see AH=00h)
  1699.     BH = active page (see AH=05h)
  1700.     SI = DI = F345h if installed
  1701. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1702.       also have bit 7 set
  1703.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1704.       (monochrome) in all extended-row text modes
  1705. SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
  1706. --------V-1010-------------------------------
  1707. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1708.     AH = 10h
  1709.     CH,CL = row,column of upper left corner of window
  1710.     DH,DL = row,column of lower right corner of window
  1711. Return: AL = status
  1712.         00h successful
  1713.         01h failed
  1714.     AH destroyed
  1715. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1716. Note:    when a window has been set, all output via AH=0Eh is restricted to
  1717.       the specified window
  1718. SeeAlso: AH=11h"Window",AH=12h"Window"
  1719. --------V-1010-------------------------------
  1720. INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
  1721.     AH = 10h
  1722.     AL = speed
  1723.         00h fast
  1724.         01h slow (scrolling only moves characters during vertical retrace)
  1725. Return: AH = previous speed
  1726. --------V-101000----------------------------
  1727. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  1728.     AX = 1000h
  1729.     BL = palette register number (00h-0Fh)
  1730.        = attribute register number (undocumented)
  1731.          10h attribute mode control register (should let BIOS control this)
  1732.          11h overscan color register (see also AX=1001h)
  1733.          12h color plane enable register (bits 3-0 enable corresponding
  1734.         text attribute bit)
  1735.          13h horizontal PEL panning register
  1736.          14h color select register
  1737.     BH = color or attribute register value
  1738. Notes:    on MCGA, only BX = 0712h is supported
  1739.     under UltraVision, the palette locking status (see AX=CD01h)
  1740.       determines the outcome
  1741. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1742. --------V-101001-----------------------------
  1743. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  1744.     AX = 1001h
  1745.     BH = border color (00h-3Fh)
  1746. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  1747.       and places the border color at offset 11h of the palette table
  1748.       rather than offset 10h
  1749. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1750.       determines the outcome
  1751. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  1752. --------V-101002-----------------------------
  1753. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  1754.     AX = 1002h
  1755.     ES:DX -> palette register list
  1756. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1757.       determines the outcome
  1758. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  1759.  
  1760. Format of palette register list:
  1761. Offset    Size    Description
  1762.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  1763.  10h    BYTE    border color
  1764. --------V-101003-----------------------------
  1765. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  1766.     AX = 1003h
  1767.     BL = new state
  1768.         00h background intensity enabled
  1769.         01h blink enabled
  1770.     BH = 00h to avoid problems on some adapters
  1771. Notes:    although there is no function to get the current status on adapters
  1772.       prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
  1773.       VGA, use AH=1Bh and check offset 2Dh of the returned data
  1774.     when configured for a monochrome display, the Boca Research Multi-EGA
  1775.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  1776. SeeAlso: AH=08h,AH=1Bh
  1777. --------V-101007-----------------------------
  1778. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  1779.     AX = 1007h
  1780.     BL = palette or attribute (undoc) register number (see AX=1000h)
  1781. Return: BH = palette or attribute register value
  1782. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1783.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1784.       registers will cause incorrect results because the EGA registers are
  1785.       write-only.  To guard against older versions or unsupported video
  1786.       modes, programs which expect to use this function on EGA systems
  1787.       should set BH to FFh on entry.
  1788. SeeAlso: AX=1000h,AX=1009h
  1789. --------V-101008-----------------------------
  1790. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  1791.     AX = 1008h
  1792. Return: BH = border color (00h-3Fh)
  1793. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1794.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1795.       registers will cause incorrect results because the EGA registers are
  1796.       write-only.  To guard against older versions or unsupported video
  1797.       modes, programs which expect to use this function on EGA systems
  1798.       should set BH to FFh on entry.
  1799. SeeAlso: AX=1001h
  1800. --------V-101009-----------------------------
  1801. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  1802.     AX = 1009h
  1803.     ES:DX -> 17-byte buffer (see AX=1002h)
  1804. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1805.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1806.       registers will cause incorrect results because the EGA registers are
  1807.       write-only.  To guard against older versions or unsupported video
  1808.       modes, programs which expect to use this function on EGA systems
  1809.       should set the ES:DX buffer to FFh before calling.
  1810. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  1811. --------V-101010-----------------------------
  1812. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1813.     AX = 1010h
  1814.     BX = register number
  1815.     CH = new value for green (0-63)
  1816.     CL = new value for blue (0-63)
  1817.     DH = new value for red (0-63)
  1818. SeeAlso: AX=1012h,AX=1015h
  1819. --------V-101012-----------------------------
  1820. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  1821.     AX = 1012h
  1822.     BX = starting color register
  1823.     CX = number of registers to set
  1824.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  1825.          byte each of red, green and blue (0-63)
  1826. SeeAlso: AX=1010h,AX=1017h
  1827. --------V-101013-----------------------------
  1828. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  1829.     AX = 1013h
  1830.     BL = subfunction
  1831.         00h select paging mode
  1832.         BH = 00h select 4 blocks of 64
  1833.         BH = 01h select 16 blocks of 16
  1834.         01h select page
  1835.         BH = page number (00h to 03h) or (00h to 0Fh)
  1836. Note:    this function is not valid in mode 13h
  1837. SeeAlso: AX=101Ah
  1838. --------V-101015-----------------------------
  1839. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1840.     AX = 1015h
  1841.     BL = palette register number
  1842. Return: DH = red value
  1843.     CH = green value
  1844.     CL = blue value
  1845. SeeAlso: AX=1010h,AX=1017h
  1846. --------V-101017-----------------------------
  1847. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  1848.     AX = 1017h
  1849.     BX = starting palette register
  1850.     CX = number of palette registers to read
  1851.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  1852. Return: buffer filled with CX red, green and blue triples
  1853. SeeAlso: AX=1012h,AX=1015h
  1854. --------V-101018-----------------------------
  1855. INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
  1856.     AX = 1018h
  1857.     BL = new PEL value
  1858. SeeAlso: AX=1019h
  1859. --------V-101019-----------------------------
  1860. INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
  1861.     AX = 1019h
  1862. Return:    BL = value read
  1863. SeeAlso: AX=1018h
  1864. --------V-10101A-----------------------------
  1865. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  1866.     AX = 101Ah
  1867. Return: BL = paging mode
  1868.         00h four pages of 64
  1869.         01h sixteen pages of 16
  1870.     BH = current page
  1871. SeeAlso: AX=1013h
  1872. --------V-10101B-----------------------------
  1873. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  1874.     AX = 101Bh
  1875.     BX = starting palette register
  1876.     CX = number of registers to convert
  1877. Desc:    convert the RGB values of one or more palette registers such that the
  1878.       resulting values are grays with the same intensities as the original
  1879.       colors
  1880. SeeAlso: AH=12h/BL=33h
  1881. --------V-1010E0-----------------------------
  1882. INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
  1883.     AX = 10E0h
  1884.     BL = video mode (see also AH=00h)
  1885.         2Eh = 640x480
  1886. Return: ???
  1887. SeeAlso: AH=00h,AX=10F0h
  1888. --------V-1010F0-----------------------------
  1889. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  1890.     AX = 10F0h
  1891.     BL = video mode (see also AH=00h)
  1892.         13h = 320x200x32K
  1893.         2Dh = 640x350x32K
  1894.         2Eh = 640x480x32K
  1895.         2Fh = 640x400x32K
  1896.         30h = 800x600x32K
  1897.         3Eh = 640x480x16M (Genoa 7900)
  1898.         FFh Tseng 24-bit color mode
  1899.             BH = mode
  1900.                 2Eh = 640x480x16M
  1901. Return:    AL = 10h if supported
  1902.     AH = status
  1903.         00h if successful
  1904.         other on error
  1905. Desc:    switch the display into a graphics mode with 15 or more bits per pixel
  1906. Note:    the Tseng HiColor BIOS extensions are supported by:
  1907.       Diamond Computer Systems    SpeedStar HiColor VGA
  1908.       Everex Systems        HC VGA
  1909.       Focus Information Systems    2theMax 4000
  1910.       Cardinal Technologies        VGA732
  1911.       Orchid ProDesigner IIs    Genoa 7900
  1912. SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
  1913. Index:    video modes
  1914. --------V-1010F1-----------------------------
  1915. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  1916.     AX = 10F1h
  1917. Return: AL = 10h if supported
  1918.     BL = type of digital/analog converter
  1919.         00h normal VGA DAC
  1920.         01h Sierra SC1148x HiColor DAC
  1921.         02h new Sierra DAC
  1922.        else other HiColor DAC
  1923. Desc:    determine which type of digital-to-analog converter is installed on the
  1924.       display board
  1925. SeeAlso: AX=10F0h,AX=10F2h
  1926. --------V-1010F2BL00-------------------------
  1927. INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF IN HiColor MODE
  1928.     AX = 10F2h
  1929.     BL = 00h
  1930. Return: AX = 0010h if supported
  1931.     BL = video mode type
  1932.         00h normal
  1933.         else HiColor mode
  1934. Desc:    determine whether the display is in a graphics mode with 15 or more
  1935.       bits per pixel color resolution
  1936. SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
  1937. --------V-1011-------------------------------
  1938. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  1939.     AH = 11h
  1940. Return: CH,CL = row,column of upper left corner
  1941.     DH,DL = row,column of lower right corner
  1942. Desc:    determine the portion of the display to which output is restricted
  1943. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1944. SeeAlso: AH=10h"Window",AH=12h"Window"
  1945. --------V-1011-------------------------------
  1946. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1947.     AH = 11h
  1948.     The following functions will cause a mode set, completely resetting
  1949.     the video environment, but without clearing the video buffer
  1950.     AL = 00h, 10h: load user-specified patterns
  1951.         ES:BP -> user table
  1952.         CX      = count of patterns to store
  1953.         DX      = character offset into map 2 block
  1954.         BL      = block to load in map 2
  1955.         BH      = number of bytes per character pattern
  1956.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1957.         BL      = block to load
  1958.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1959.         BL      = block to load
  1960.     AL = 03h: set block specifier
  1961.         BL      = block specifier
  1962.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1963.                      bit 3 = 0
  1964.                   bits 2,3 = block selected by chars with attribute
  1965.                      bit 3 = 1
  1966.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1967.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1968.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1969.         BL    = block to load
  1970. Notes:    The routines called with AL=1xh are designed to be called only
  1971.       immediately after a mode set and are similar to the routines called
  1972.       with AL=0xh, except that:
  1973.           Page 0 must be active.
  1974.           Bytes/character is recalculated.
  1975.           Max character rows is recalculated.
  1976.           CRT buffer length is recalculated.
  1977.           CRTC registers are reprogrammed as follows:
  1978.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  1979.              R0A = bytes/char-2 ; cursor start
  1980.              R0B = 0        ; cursor end
  1981.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  1982.              R14 = bytes/char    ; underline loc
  1983.                (*** BUG: should be 1 less ***)
  1984.     the current block specifiers may be determined with INT 10/AH=1Bh,
  1985.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  1986. SeeAlso: AH=1Bh,AX=CD10h
  1987. --------V-101120-----------------------------
  1988. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
  1989.     AX = 1120h
  1990.     ES:BP -> user table for INT 1F
  1991. Note:    this function is meant to be called immediately after a mode set;
  1992.       results are unpredictable at other times
  1993. SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1125h,INT 1F,INT 43
  1994. --------V-101121-----------------------------
  1995. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
  1996.     AX = 1121h
  1997.     ES:BP -> user table
  1998.     CX = bytes per character
  1999.     BL = row specifier
  2000.         00h user set
  2001.         DL = number of rows
  2002.         01h 14 rows
  2003.         02h 25 rows
  2004.         03h 43 rows
  2005. Note:    this function is meant to be called immediately after a mode set;
  2006.       results are unpredictable at other times
  2007. SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  2008. --------V-101122-----------------------------
  2009. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
  2010.     AX = 1122h
  2011.     BL = row specifier (see AX=1121h)
  2012. Notes:    this function is meant to be called immediately after a mode set;
  2013.       results are unpredictable at other times
  2014.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2015. SeeAlso: AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  2016. --------V-101123-----------------------------
  2017. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
  2018.     AX = 1123h
  2019.     BL = row specifier (see AX=1121h)
  2020. Note:    this function is meant to be called immediately after a mode set;
  2021.       results are unpredictable at other times
  2022. Notes:    this function is meant to be called immediately after a mode set;
  2023.       results are unpredictable at other times
  2024.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2025. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h,INT 1F,INT 43
  2026. --------V-101124-----------------------------
  2027. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
  2028.     AX = 1124h
  2029.     BL = row specifier (see AX=1121h)
  2030. Notes:    this function is meant to be called immediately after a mode set;
  2031.       results are unpredictable at other times
  2032.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2033. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h,INT 1F,INT 43
  2034. --------V-101129-----------------------------
  2035. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
  2036.     AX = 1129h
  2037.     BL = row specifier (see AX=1121h)
  2038. Notes:    this function is meant to be called immediately after a mode set;
  2039.       results are unpredictable at other times
  2040.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2041. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F, INT 43
  2042. --------V-101130-----------------------------
  2043. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  2044.     AX = 1130h
  2045.     BH = pointer specifier
  2046.         00h INT 1Fh pointer
  2047.         01h INT 43h pointer
  2048.         02h ROM 8x14 character font pointer
  2049.         03h ROM 8x8 double dot font pointer
  2050.         04h ROM 8x8 double dot font (high 128 characters)
  2051.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  2052.         06h ROM 8x16 font (MCGA, VGA)
  2053.         07h ROM alternate 9x16 font (VGA only)
  2054.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  2055.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  2056. Return: ES:BP = specified pointer
  2057.     CX    = bytes/character of on-screen font (not the requested font!)
  2058.     DL    = character rows on screen - 1 (VGA)
  2059.           = character rows on screen (EGA)
  2060. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  2061.       8xN font at ES:BP+256N
  2062. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  2063.  
  2064. Format of alternate font table [array]:
  2065. Offset    Size    Description
  2066.  00h    BYTE    character to be replaced (00h = end of table)
  2067.  01h  N BYTEs    graphics data for character, one byte per scan line
  2068. --------V-101130BX4D4F-----------------------
  2069. INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK
  2070.     AX = 1130h
  2071.     BX = 4D4Fh
  2072. Return: CX = 4F4Dh if installed
  2073.         ES:BP -> M10_SCR INT 10 handler
  2074. Program: M10_SCR is a shareware extended text mode and font driver by
  2075.       I.V. Morozov
  2076. SeeAlso: INT 16/AX=4D4Fh
  2077. --------V-1012-------------------------------
  2078. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  2079.     AH = 12h
  2080. Return: BH = attribute to use on blanked lines when scrolling
  2081. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2082. SeeAlso: AH=11h"Window",AH=12h"Window"
  2083. --------V-1012--BL10-------------------------
  2084. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  2085.     AH = 12h
  2086.     BL = 10h
  2087. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  2088.          01h mono mode in effect (I/O port 3Bxh)
  2089.     BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
  2090.     CH = feature bits
  2091.     CL = switch settings
  2092.         bit 0: switch 1 OFF
  2093.         bit 1: switch 2 OFF
  2094.         bit 2: switch 3 OFF
  2095.         bit 3: switch 4 OFF
  2096.         bits 4-7: unused
  2097. Note:    one possible check for the presence of an EGA or later display card
  2098.       is to call this function with BH=FFh; if not present, BH will be
  2099.       unchanged on return
  2100. --------V-1012--BL20-------------------------
  2101. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  2102.     AH = 12h
  2103.     BL = 20h  select alternate print screen routine
  2104. Desc:    installs a PrtSc routine from the video card's BIOS to replace the
  2105.       default PrtSc handler from the ROM BIOS, which usually does not
  2106.       understand screen heights other than 25 lines
  2107. Note:    some adapters disable print-screen instead of enhancing it
  2108. SeeAlso: INT 05
  2109. --------V-1012--BL2E-------------------------
  2110. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2111.     AH = 12h
  2112.     BL = 2Eh
  2113. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2114.       crash the system on this function
  2115. --------V-1012--BL30-------------------------
  2116. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  2117.     AH = 12h
  2118.     BL = 30h
  2119.     AL = vertical resolution
  2120.          00h 200 scan lines
  2121.          01h 350 scan lines
  2122.          02h 400 scan lines
  2123. Return: AL = 12h if function supported
  2124. Desc:    specify the number of scan lines used to display text modes
  2125. Note:    the specified resolution will take effect on the next mode set
  2126. SeeAlso: AH=00h
  2127. --------V-1012--BL31-------------------------
  2128. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  2129.     AH = 12h
  2130.     BL = 31h
  2131.     AL = new state
  2132.         00h enable default palette loading
  2133.         01h disable default palette loading
  2134. Return: AL = 12h if function supported
  2135. Desc:    specify whether a default palette should be loaded when the display
  2136.       mode is set
  2137. SeeAlso: AH=00h
  2138. --------V-1012--BL32-------------------------
  2139. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  2140.     AH = 12h
  2141.     BL = 32h
  2142.     AL = new state
  2143.         00h enable video addressing
  2144.         01h disable video addressing
  2145. Return: AL = 12h if function supported
  2146. Desc:    specify whether the CPU should have access to video memory and the 
  2147.       display adapters I/O registers
  2148. --------V-1012--BL33-------------------------
  2149. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  2150.     AH = 12h
  2151.     BL = 33h
  2152.     AL = new state
  2153.         00h enable gray scale summing
  2154.         01h disable gray scale summing
  2155. Return: AL = 12h if function supported
  2156. Desc:    specify whether or not colors should be converted to gray scale when
  2157.       palette or color registers are loaded
  2158. SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
  2159. --------V-1012--BL34-------------------------
  2160. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  2161.     AH = 12h
  2162.     BL = 34h
  2163.     AL = new state
  2164.         00h enable alphanumeric cursor emulation
  2165.         01h disable alphanumeric cursor emulation
  2166. Return: AL = 12h if function supported
  2167. Desc:    specify whether the BIOS should automatically remap cursor start/end
  2168.       according to the current character height in text modes
  2169. SeeAlso: AH=01h,AH=03h
  2170. --------V-1012--BL35-------------------------
  2171. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  2172.     AH = 12h
  2173.     BL = 35h
  2174.     AL = subfunction
  2175.         00h initial adapter video off
  2176.         01h initial planar video on
  2177.         02h switch active video off
  2178.         03h switch inactive video on
  2179.         80h *UNDOCUMENTED* set system board video active flag
  2180.     ES:DX -> buffer for 128 byte save area (if AL = 0, 2 or 3)
  2181. Return: AL = 12h if function supported
  2182. Desc:    switch between two video adapters which may otherwise have address
  2183.       conflicts
  2184. --------V-1012--BL36-------------------------
  2185. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  2186.     AH = 12h
  2187.     BL = 36h
  2188.     AL = new state
  2189.         00h enable refresh
  2190.         01h disable refresh
  2191. Return: AL = 12h if function supported
  2192. Desc:    specify whether the contents of video memory should be displayed on
  2193.       the screen; disabling refresh effectively blanks the screen
  2194. SeeAlso: AX=BF05h
  2195. --------V-1012--BH55-------------------------
  2196. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  2197.     AH = 12h
  2198.     BH = 55h
  2199.     BL = subfunction
  2200.         00h disabled enhanced features
  2201.         01h enable enhanced features
  2202.         02h get status
  2203.         Return: AL = status flags (see below)
  2204.         03h disable register trapping (CGA emulation)
  2205.         04h enable register trapping
  2206.         05h program video mode
  2207.             ES:BP -> video mode table (see below)
  2208.         06h get mode table
  2209.         AL = video mode
  2210.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  2211.             BP = FFFFh on error
  2212.  
  2213. Bitfields for status flags:
  2214.  bit 3    set if enhanced features enabled
  2215.  bits 7-5 monitor type
  2216.     000 PS/2 mono
  2217.     001 PS/2 color
  2218.     010 multi-sync
  2219.     011 Taxan 650 25kHz
  2220.     100 RGB
  2221.     101 mono
  2222.     110 EGA
  2223.     111 Compaq internal
  2224.  
  2225. Format of ATI VGA Wonder video mode table:
  2226. Offset    Size    Description
  2227.  00h    BYTE    number of columns
  2228.  01h    BYTE    maximum row (number of rows - 1)
  2229.  02h    BYTE    scan lines per row
  2230.  03h    WORD    video buffer size in bytes
  2231.  05h  4 BYTEs    values for Sequencer registers 1-4
  2232.  09h    BYTE    value for Miscellaneous Output register
  2233.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  2234.         00h horizontal total size (chars)
  2235.         01h horizontal displayed (chars)
  2236.         02h horizontal sync position (chars)
  2237.         03h horizontal sync width (chars)
  2238.         04h vertical total size (char rows)
  2239.         05h vertical total adjust (scan lines)
  2240.         06h vertical displayed (char rows)
  2241.         07h vertical sync position (char rows)
  2242.         08h interlace mode
  2243.         09h max scan line in row
  2244.         0Ah cursor start scan line
  2245.         0Bh cursor end scan line
  2246.         0Ch screen memory start (high)
  2247.         0Dh screen memory start (low)
  2248.         0Eh cursor address (high)
  2249.         0Fh cursor address (low)
  2250.         10h light pen (high)
  2251.         11h light pen (low)
  2252.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  2253.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  2254. --------V-1012--BL74-------------------------
  2255. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2256.     AH = 12h
  2257.     BL = 74h
  2258. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2259.       crash the system on this function
  2260. --------V-1012--BL80-------------------------
  2261. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2262.     AH = 12h
  2263.     BL = 80h
  2264. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2265.       crash the system on this function
  2266. --------V-1012--BLBE-------------------------
  2267. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2268.     AH = 12h
  2269.     BL = BEh
  2270. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2271.       crash the system on this function
  2272. --------V-1012--BLC6-------------------------
  2273. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2274.     AH = 12h
  2275.     BL = C6h
  2276. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2277.       crash the system on this function
  2278. --------V-1012--BLF0-------------------------
  2279. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2280.     AH = 12h
  2281.     BL = F0h
  2282. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2283.       crash the system on this function
  2284. --------V-1013-------------------------------
  2285. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  2286.     AH = 13h
  2287.     AL = write mode
  2288.        bit 0: update cursor after writing
  2289.        bit 1: string contains alternating characters and attributes
  2290.     BH = page number
  2291.     BL = attribute if string contains only characters
  2292.     CX = number of characters in string
  2293.     DH,DL = row,column at which to start writing
  2294.     ES:BP -> string to write
  2295. Notes:    recognizes CR, LF, BS, and bell
  2296.     also available PC or XT with EGA or higher
  2297.     HP 95LX only supports write mode 00h
  2298. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  2299.       the active page rather than the requested page
  2300. SeeAlso: AH=09h,AH=0Ah
  2301. --------V-101400-----------------------------
  2302. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  2303.     AX = 1400h
  2304.     ES:DI -> character font
  2305.     BH = number of bytes per character
  2306.         08h or 10h (Compaq)
  2307.     BL = 00h load main font (block 0)
  2308.          01h load alternate font (block 1)
  2309.     CX = number of characters to store
  2310.     DX = character offset into RAM font area
  2311. SeeAlso: AH=11h,AX=1401h
  2312. --------V-101401-----------------------------
  2313. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  2314.     AX = 1401h
  2315.     BL = font to load
  2316.         00h main font (block 0)
  2317.         01h alternate font (block 1)
  2318. SeeAlso: AH=11h,AX=1400h
  2319. --------V-101402-----------------------------
  2320. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  2321.     AX = 1402h
  2322.     BL = function
  2323.         00h ignore high intensity attribute
  2324.         01h map high intensity to underscore
  2325.         02h map high intensity to reverse video
  2326.         03h map high intensity to selected alternate font
  2327.         B0h half intensity (Compaq)
  2328.         B1h toggle active intensity bit interpretation (CP386)
  2329. --------V-1015-------------------------------
  2330. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  2331.     AH = 15h
  2332. Return: AX = alternate display adapter type (see below)
  2333.     ES:DI -> parameter table (see below)
  2334. SeeAlso: AH=1Bh
  2335.  
  2336. Values for alternate display adapter type:
  2337.  0000h none
  2338.  5140h LCD
  2339.  5153h CGA
  2340.  5151h mono
  2341.  
  2342. Format of display parameter table:
  2343. Offset    Size    Description
  2344.  00h    WORD    monitor model number
  2345.  02h    WORD    vertical pixels per meter
  2346.  04h    WORD    horizontal pixels per meter
  2347.  06h    WORD    total vertical pixels
  2348.  08h    WORD    total horizontal pixels
  2349.  0Ah    WORD    horizontal pixel separation in micrometers
  2350.  0Ch    WORD    vertical pixel separation in micrometers
  2351. --------V-1015-------------------------------
  2352. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  2353.     AH = 15h
  2354.     AL = superimpose mode
  2355.         00h show graphics screen
  2356.         01h show text screen
  2357.         02h show text screen superimposed on graphics screen
  2358. --------V-101A00-----------------------------
  2359. INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  2360.     AX = 1A00h
  2361. Return: AL = 1Ah if function was supported
  2362.         BL = active display code (see below)
  2363.         BH = alternate display code
  2364. SeeAlso: AH=12h/BH=35h,AX=1A01h,AH=1Bh
  2365.  
  2366. Values for display combination code:
  2367.  00h no display
  2368.  01h monochrome adapter w/ monochrome display
  2369.  02h CGA w/ color display
  2370.  03h reserved
  2371.  04h EGA w/ color display
  2372.  05h EGA w/ monochrome display
  2373.  06h PGA w/ color display
  2374.  07h VGA w/ monochrome analog display
  2375.  08h VGA w/ color analog display
  2376.  09h reserved
  2377.  0Ah MCGA w/ digital color display
  2378.  0Bh MCGA w/ monochrome analog display
  2379.  0Ch MCGA w/ color analog display
  2380.  FFh unknown display type
  2381. --------V-101A01-----------------------------
  2382. INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  2383.     AX = 1A01h
  2384.     BL = active display code (see AX=1A00h)
  2385.     BH = alternate display code
  2386. Return: AL = 1Ah if function was supported
  2387. SeeAlso: AH=12h/BH=35h,AX=1A00h
  2388. --------V-101B-------------------------------
  2389. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  2390.     AH = 1Bh
  2391.     BX = implementation type
  2392.         0000h return funtionality/state information
  2393.     ES:DI -> 64-byte buffer for state information (see below)
  2394. Return: AL = 1Bh if function supported
  2395.         ES:DI buffer filled with state information
  2396. BUG:    Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
  2397.       do not correctly set the fields at offsets 27h and 29h of the
  2398.       state information
  2399. SeeAlso: AH=15h,AX=1A00h,AX=1F01h
  2400.  
  2401. Format of state information:
  2402. Offset    Size    Description
  2403.  00h    DWORD    address of static funtionality table (see below)
  2404.  04h    BYTE    video mode in effect
  2405.  05h    WORD    number of columns
  2406.  07h    WORD    length of regen buffer in bytes
  2407.  09h    WORD    starting address of regen buffer
  2408.  0Bh    WORD    cursor position for page 0
  2409.  0Dh    WORD    cursor position for page 1
  2410.  0Fh    WORD    cursor position for page 2
  2411.  11h    WORD    cursor position for page 3
  2412.  13h    WORD    cursor position for page 4
  2413.  15h    WORD    cursor position for page 5
  2414.  17h    WORD    cursor position for page 6
  2415.  19h    WORD    cursor position for page 7
  2416.  1Bh    WORD    cursor type
  2417.  1Dh    BYTE    active display page
  2418.  1Eh    WORD    CRTC port address
  2419.  20h    BYTE    current setting of register (3?8)
  2420.  21h    BYTE    current setting of register (3?9)
  2421.  22h    BYTE    number of rows
  2422.  23h    WORD    bytes/character
  2423.  25h    BYTE    display combination code of active display
  2424.  26h    BYTE    DCC of alternate display
  2425.  27h    WORD    number of colors supported in current mode
  2426.  29h    BYTE    number of pages supported in current mode
  2427.  2Ah    BYTE    number of scan lines active
  2428.          (0,1,2,3) = (200,350,400,480)
  2429.         Tseng ET3000: (4,5,6 = 512,600,768)
  2430.  2Bh    BYTE    primary character block
  2431.  2Ch    BYTE    secondary character block
  2432.  2Dh    BYTE    miscellaneous flags (see below)
  2433.  2Eh  3 BYTEs    reserved (00h)
  2434.  31h    BYTE    video memory available
  2435.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  2436.  32h    BYTE    save pointer state flags (see below)
  2437.  33h 13 BYTEs    reserved (00h)
  2438.  
  2439. Bitfields for miscellaneous flags:
  2440.  bit 0    all modes on all displays on
  2441.  bit 1    gray summing on
  2442.  bit 2    monochrome display attached
  2443.  bit 3    default palette loading disabled
  2444.  bit 4    cursor emulation enabled
  2445.  bit 5    0 = intensity; 1 = blinking
  2446.  bit 6    PS/2 P70 plasma display (without 9-dot wide font) active
  2447.  bit 7    reserved
  2448.  
  2449. Bitfields for save pointer state flags:
  2450.  bit 0    512 character set active
  2451.  bit 1    dynamic save area present
  2452.  bit 2    alpha font override active
  2453.  bit 3    graphics font override active
  2454.  bit 4    palette override active
  2455.  bit 5    DCC override active
  2456.  bits 6-7 reserved
  2457.  
  2458. Format of Static Functionality Table:
  2459. Offset    Size    Description
  2460.  00h    BYTE    modes supported #1
  2461.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  2462.  01h    BYTE    modes supported #2
  2463.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  2464.  02h    BYTE    modes supported #3
  2465.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  2466.         bit 4 to bit 7 reserved
  2467.  03h    BYTE    (IBM) reserved
  2468.          (Tseng ET3000/4000) modes supported #4
  2469.                 bit 0 to bit 7 = modes 18h-1Fh supported
  2470.  04h    BYTE    (IBM) reserved
  2471.          (Tseng ET3000/4000) modes supported #5
  2472.                 bit 0 to bit 7 = modes 20h-27h supported
  2473.  05h    BYTE    (IBM) reserved
  2474.          (Tseng ET3000/4000) modes supported #6
  2475.                 bit 0 to bit 7 = modes 28h-2Fh supported
  2476.  06h    BYTE    (IBM) reserved
  2477.          (Tseng ET3000/4000) modes supported #7
  2478.                 bit 0 to bit 7 = modes 30h-37h supported
  2479.  07h    BYTE    scan lines supported
  2480.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  2481.  08h    BYTE    total number of character blocks available in text modes
  2482.  09h    BYTE    maximum number of active character blocks in text modes
  2483.  0Ah    WORD    miscellaneous function support flags (see below)
  2484.  0Ch    WORD    reserved
  2485.  0Eh    BYTE    save pointer function flags (see below)
  2486.  0Fh    BYTE    reserved
  2487.  
  2488. Bitfields for miscellaneous function support flags:
  2489.  bit 0    all modes on all displays function supported
  2490.  bit 1    gray summing function supported
  2491.  bit 2    character font loading function supported
  2492.  bit 3    default palette loading enable/disable supported
  2493.  bit 4    cursor emulation function supported
  2494.  bit 5    EGA palette present
  2495.  bit 6    color palette present
  2496.  bit 7    color paging function supported
  2497.  bit 8    light pen supported
  2498.  bit 9    save/restore state function 1Ch supported
  2499.  bit 10    intensity blinking function supported
  2500.  bit 11    Display Combination Code supported
  2501.  bits 12-15 reserved
  2502.  
  2503. Bitfields for save pointer function flags:
  2504.  bit 0    512 character set supported
  2505.  bit 1    dynamic save area supported
  2506.  bit 2    alpha font override supported
  2507.  bit 3    graphics font override supported
  2508.  bit 4    palette override supported
  2509.  bit 5    DCC extension supported
  2510.  bits 6-7 reserved
  2511. --------V-101C-------------------------------
  2512. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  2513.     AH = 1Ch
  2514.     AL = function
  2515.         00h return state buffer size
  2516.         Return: BX = number of 64-byte blocks needed
  2517.         01h save video state
  2518.         ES:BX -> buffer
  2519.         02h restore video state
  2520.         ES:BX -> buffer containing previously saved state
  2521.     CX = requested states
  2522.          bit 0 video hardware
  2523.          bit 1 BIOS data areas
  2524.          bit 2 color registers and DAC state
  2525.          bits 3-15 reserved
  2526. Return: AL = 1Ch if function supported
  2527. Notes:    many BIOSes corrupt the video registers when saving the state, so a
  2528.       program should restore the state immediately after saving it (the
  2529.       saved data is uncorrupted)
  2530.     the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
  2531.  
  2532. Format of video hardware state:
  2533. Offset    Size    Description
  2534.  00h    BYTE    sequencer index register
  2535.  01h    BYTE    CRTC index register
  2536.  02h    BYTE    graphics controller index register
  2537.  03h    BYTE    attribute controller index register
  2538.  04h    BYTE    feature controller register
  2539.  05h  4 BYTEs    sequencer registers
  2540.  09h    BYTE    sequencer register 0
  2541.  0Ah 25 BYTEs    CRTC registers 0-8
  2542.  23h 16 BYTEs    palette registers 00h-0Fh
  2543.  33h  4 BYTEs    attribute registers 10h-13h
  2544.  37h  9 BYTEs    graphics controller registers 0-8
  2545.  40h    BYTE    CRTC base address (low)
  2546.  41h    BYTE    CRTC base address (high)
  2547.  42h    BYTE    plane 0 latch
  2548.  43h    BYTE    plane 1 latch
  2549.  44h    BYTE    plane 2 latch
  2550.  45h    BYTE    plane 3 latch
  2551.  
  2552. Format of DAC state:
  2553. Offset    Size    Description
  2554.  00h    BYTE    read/write mode DAC
  2555.  01h    BYTE    pixel address
  2556.  02h    BYTE    pixel mask
  2557.  03h 768 BYTEs    color data (256 triples)
  2558. 303h    BYTE    color select register
  2559. --------V-101D-------------------------------
  2560. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2561.     AH = 1Dh
  2562. Note:    this version of the BIOS jumps to a random location on this function
  2563.       due to a fencepost error
  2564. --------V-101F00-----------------------------
  2565. INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
  2566.     AX = 1F00h
  2567. Return: AL = 1Fh if supported
  2568.         BX = number of bytes of DMQS data
  2569. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2570.       and later models.
  2571. SeeAlso: AX=1F01h
  2572. --------V-101F01-----------------------------
  2573. INT 10 - VIDEO - XGA - READ DMQS DATA
  2574.     AX = 1F01h
  2575.     ES:DI -> user buffer for return data (call AH=1F00 for size)
  2576. Return: AL = 1Fh if function supported
  2577.     user buffer filled with DMQS data, see below.
  2578. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2579.       and later models.
  2580. SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
  2581.  
  2582. Format of DMQS buffer:
  2583. Offset    Size    Description
  2584.  00h    WORD    offset (in bytes) to DMQS data for next XGA instance
  2585.  02h    BYTE    slot number
  2586.  03h    BYTE    XGA implementation function level identifier
  2587.  04h    BYTE    XGA implementation resolution level identifier
  2588.  05h    WORD    vendor identifier - identifies card vendor
  2589.  07h    WORD    vendor defined field
  2590.  09h    WORD    XGA adapter I/O register base address
  2591.  0Bh    WORD    XGA coprocessor register base address
  2592.         (paragraph--multiply by 10h to get physical address)
  2593.  0Dh    WORD    1 Megabyte system video memory aperture
  2594.         0000h if not allocated
  2595.         (Multiply by 100000h to get physical address)
  2596.  0Fh    WORD    4 Megabyte system video memory aperture
  2597.         0000h if not allocated
  2598.         (multiply by 100000h to get physical address)
  2599.  11h    WORD    video memory base address
  2600.         (multiply by 100000h to get physical address)
  2601.  13h    WORD    composite ID of the attached display
  2602.  15h    BYTE    amount of video memory available, in multiples of 256K bytes
  2603.  16h    DWORD    alternate XGA coprocessor register base address.  0 = none.
  2604.  1Ah    var    DMQS Data for further XGA Instances (as above)
  2605. Note:    "Instances" refers to the capability of having up to 8 XGA 
  2606.       adapters in one computer.
  2607. --------V-103000CX0000-----------------------
  2608. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  2609.     AX = 3000h
  2610.     CX = 0000h
  2611.     DX = 0000h
  2612. Return: CX:DX -> 3270PC configuration table (see below)
  2613.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  2614. SeeAlso: AX=1F01h
  2615.  
  2616. Format of 3270 PC configuration table:
  2617. Offset    Size    Description
  2618.  00h    BYTE    aspect ratio X
  2619.  01h    BYTE    aspect ratio Y
  2620.  02h    BYTE    monitor type (see below)
  2621.  03h    BYTE    reserved
  2622.  04h    BYTE    adapter ID
  2623.         00h = 5151/5272 adapter
  2624.         04h = 5151/5272 with XGA adapter
  2625.         30h = 3295 or 3270PC G/GX adapter
  2626.  05h    BYTE    reserved
  2627.  06h    BYTE    function flags 1 (see below)
  2628.  07h    BYTE    function flags 2
  2629.         bit 6: GPI graphics supported
  2630.  08h    WORD    segment address of Control Program Level table (see below)
  2631.  0Ah 10 BYTEs    reserved
  2632.  
  2633. Values for monitor type:
  2634.  00h    5151 (mono) or 5272 (color)
  2635.  01h    3295
  2636.  02h    5151 or 5272 with XGA (???) graphics adapter
  2637.  03h    5279 with 3270PC G adapter
  2638.  04h    5379 model C01 with 3270PC GX adapter
  2639.  05h    5379 model M01 with 3270PC GX adapter
  2640.  07h    non-3270PC with 3270 Workstation Program
  2641.  FFh    3270PC Control Program not loaded
  2642.  
  2643. Bitfields for function flags 1:
  2644.  bit 7    mono text, 1 page
  2645.  bit 6    color text, 1 page
  2646.  bit 5    color text, 4 pages
  2647.  bit 4    CGA color graphics
  2648.  bit 3    720x350 two-color graphics
  2649.  bit 2    360x350 four-color graphics
  2650.  bit 1    720x350 eight-color graphics
  2651.  
  2652. Format of Control Program Level table:
  2653. Offset    Size    Description
  2654.  00h    WORD    program version
  2655.         02xxh = 3270PC Control Program v2.xx
  2656.         03xxh = 3270PC Control Program v3.xx
  2657.         04xxh = 3270 Workstation Program v1.xx
  2658.  02h    BYTE    Control Program ID (00h)
  2659.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  2660. --------a-103800-----------------------------
  2661. INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO
  2662.     AX = 3800h
  2663. Return: ES:DI -> configuration info (see below)
  2664. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  2665. Notes:    this call is also used as the installation check by verifying that the
  2666.       returned ES:DI points at valid configuration info
  2667.     Tinytalk v1.09f ignores AL and always returns the configuration info;
  2668.       v1.10 adds several subfunctions selected with AL
  2669. SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h
  2670. SeeAlso: INT 2F/FB00h"AutoBraille"
  2671. Index:    installation check;Tinytalk Personal
  2672.  
  2673. Format of configuration info:
  2674. Offset    Size    Description
  2675.  00h  8 BYTEs    signature "TTCONFIG"
  2676.  08h    WORD    size of configuration data, not counting signature, this WORD,
  2677.         or the following byte
  2678.  0Ah    BYTE    ???
  2679.  0Bh    ???    configuration data
  2680. --------a-103801-----------------------------
  2681. INT 10 - Tinytalk Personal v1.10 - ???
  2682.     AX = 3801h
  2683.     DL = ???
  2684. Return: ???
  2685. SeeAlso: AX=3800h,AX=3802h
  2686. --------a-103802-----------------------------
  2687. INT 10 - Tinytalk Personal v1.10 - ???
  2688.     AX = 3802h
  2689.     DL = ???
  2690. Return: ???
  2691. SeeAlso: AX=3800h,AX=3801h
  2692. --------a-103803-----------------------------
  2693. INT 10 - Tinytalk Personal v1.10 - GET ???
  2694.     AX = 3803h
  2695. Return: AL = ???
  2696. SeeAlso: AX=3800h,AX=3804h,AX=3805h
  2697. --------a-103804-----------------------------
  2698. INT 10 - Tinytalk Personal v1.10 - GET ???
  2699.     AX = 3804h
  2700. Return: AX = ???
  2701. SeeAlso: AX=3800h,AX=3803h,AX=3805h
  2702. --------a-103805-----------------------------
  2703. INT 10 - Tinytalk Personal v1.10 - GET ???
  2704.     AX = 3805h
  2705. Return: AL = ???
  2706. SeeAlso: AX=3800h,AX=3803h,AX=3804h
  2707. --------a-103806-----------------------------
  2708. INT 10 - Tinytalk Personal v1.10 - ???
  2709.     AX = 3806h
  2710.     ES:DX -> ASCIZ ???
  2711. Return: ???
  2712. SeeAlso: AX=3800h
  2713. --------a-1039-------------------------------
  2714. INT 10 - Tinytalk Personal v1.10 - ???
  2715.     AH = 39h
  2716. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  2717. Note:    this function was a NOP in TTDEMO.EXE, but may be implemented in other
  2718.       variants of Tinytalk
  2719. --------V-1040-------------------------------
  2720. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  2721.     AH = 40h
  2722. Desc:    switch the Hercules Graphics Card into graphics mode (720x348)
  2723. SeeAlso: AH=00h,AH=41h
  2724. Index:    video modes
  2725. --------V-1041-------------------------------
  2726. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  2727.     AH = 41h
  2728. Desc:    switch the Hercules Graphics Card into text mode
  2729. SeeAlso: AH=00h,AH=40h
  2730. Index:    video modes
  2731. --------V-1042-------------------------------
  2732. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  2733.     AH = 42h
  2734. SeeAlso: AH=45h
  2735. --------V-1043-------------------------------
  2736. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  2737.     AH = 43h
  2738.     AL = page number (0,1)
  2739. Desc:    specify which of the two pages of video memory is to be used for
  2740.       output
  2741. SeeAlso: AH=05h,AH=44h,AH=45h
  2742. --------V-1044-------------------------------
  2743. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  2744.     AH = 44h
  2745.     AL = drawing function
  2746.         00h clear pixels
  2747.         01h set pixels
  2748.         02h invert pixels
  2749. Desc:    specify how graphics output will change the display
  2750. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  2751. --------V-1045-------------------------------
  2752. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  2753.     AH = 45h
  2754.     AL = page number (0,1)
  2755. Desc:    specify which of the two pages of video memory is visible on screen
  2756. SeeAlso: AH=05h,AH=42h,AH=43h
  2757. --------V-1046-------------------------------
  2758. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  2759.     AH = 46h
  2760.     DI = x (0-720)
  2761.     BP = y (0-347)
  2762. Note:    function 44h determines operation and function 43h which page to use
  2763. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  2764. --------V-1047-------------------------------
  2765. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  2766.     AH = 47h
  2767.     DI = x (0-720)
  2768.     BP = y (0-347)
  2769. Return: AL = 00h pixel clear
  2770.     AL = 01h pixel set
  2771. Note:    function 43h specifies which page is used
  2772. SeeAlso: AH=0Dh,AH=46h
  2773. --------V-1048-------------------------------
  2774. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  2775.     AH = 48h
  2776.     DI = x (0-720)
  2777.     BP = y (0-347)
  2778. Desc:    specify the location from which to start the next graphics output
  2779. SeeAlso: AH=49h
  2780. --------V-1049-------------------------------
  2781. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  2782.     AH = 49h
  2783.     DI = x (0-720)
  2784.     BP = y (0-347)
  2785. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  2786.       use
  2787. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  2788. --------V-104A-------------------------------
  2789. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  2790.     AH = 4Ah
  2791.     DI = x coordinate of lower left corner
  2792.     BP = y coordinate of lower left corner
  2793.     BX = height in pixels
  2794.     CX = width in pixels
  2795. Desc:    draw a solid rectangle of the specified size at the given location
  2796. SeeAlso: AH=4Eh
  2797. --------V-104B-------------------------------
  2798. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  2799.     AH = 4Bh
  2800.     AL = character to display
  2801.     DI = x (0-720)
  2802.     BP = y (0-347)
  2803. Note:    unlike the other BIOS character functions character position is
  2804.       specified in pixels rather than rows and columns
  2805. SeeAlso: AH=09h,AH=0Ah
  2806. ----------104B-------------------------------
  2807. INT 10 - FRIEZE - API
  2808.     AH = 4Bh
  2809.     CL = function
  2810.         00h (v6.x-) print window
  2811.             AL = mode
  2812.             00h character
  2813.             01h normal
  2814.             02h sideways
  2815.         01h load window
  2816.         ES:BX -> ASCIZ filename from which to read
  2817.         02h save window
  2818.         ES:BX -> ASCIZ filename to which to write
  2819.         03h set print width
  2820.         AL = width in 1/4 inches
  2821.         04h set print height
  2822.         AL = height in 1/4 inches
  2823.         05h reserved
  2824.         06h set left margin
  2825.         AL = printout margin in 1/4 inches
  2826.         07h set window size
  2827.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  2828.         08h reserved
  2829.         09h set patterns
  2830.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  2831.         0Ah get patterns
  2832.         ES:BX -> 16-BYTE buffer for color correspondences
  2833.         0Bh set mode
  2834.         AL = mode
  2835.         0Ch (v7.41) ???
  2836.         AL = ???
  2837.             00h ??? (calls original INT 05)
  2838.             else ???
  2839.         0Dh (v7.41) ???
  2840.         AL = ???
  2841.             00h ??? (calls original INT 05)
  2842.             else ???
  2843.         0Eh (v7.41) ???
  2844.         ???
  2845.         0Fh get window
  2846.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  2847.         10h set print options
  2848.         ES:BX -> printer options in same format as FRIEZE cmdline
  2849.         11h initialize
  2850.             ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code
  2851.         12h (v7.41) ???
  2852.         ???
  2853.         13h (v7.41) ???
  2854.         ???
  2855.         14h get version
  2856.         Return: AH = major version (00h if FRIEZE version before 7)
  2857.             AL = minor version
  2858.         15h set parameters
  2859.         ES:BX -> parameter table (see below)
  2860.         16h get parameters
  2861.         ES:BX -> buffer for parameter table (see below)
  2862.         17h get printer resolution
  2863.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  2864.         18h (v8.0 only) reserved
  2865.         50h (v7.41) get ???
  2866.         Return: AX = ???
  2867.         51h (v7.41) get ???
  2868.         Return: ES = ??? (seen 2348h)
  2869.             AX = ??? (seen 8432h)
  2870. Return: AX = status (see below)
  2871. SeeAlso: AH=0Fh/SI=F123h
  2872.  
  2873. Values for status:
  2874.  00h successful
  2875.  01h user aborted printout with ESC
  2876.  02h reserved
  2877.  03h file read error
  2878.  04h file write error or printer error
  2879.  05h file not found
  2880.  06h invalid header (not an image or wrong screen mode) or can't create file
  2881.  07h file close error
  2882.  08h disk error
  2883.  09h (v7.0+) printer error
  2884.  0Ah invalid function
  2885.  0Bh (v7.0+) can't create file
  2886.  0Ch (v7.0+) wrong video mode
  2887.  
  2888. Format of parameter table:
  2889. Offset    Size    Description
  2890.  00h    WORD    top margin (1/100 inch)
  2891.  02h    WORD    left margin (1/100 inch)
  2892.  04h    WORD    horizontal size (1/100 inch)
  2893.  06h    WORD    vertical size (1/100 inch)
  2894.  08h    WORD    quality/draft mode
  2895.         00h draft mode
  2896.         01h quality mode
  2897.         02h use horizontal/vertical resolution for output resolution
  2898.  0Ah    WORD    printer horizontal resolution (dots per inch)
  2899.  0Ch    WORD    printer vertical resolution (dots per inch)
  2900.  0Eh    WORD    reserved (FFFFh)
  2901. Note:    any field which should remain unchanged may be filled with FFFFh
  2902. --------V-104C-------------------------------
  2903. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  2904.     AH = 4Ch
  2905.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  2906.     DI = x coordinate of center
  2907.     BP = y coordinate of center
  2908.     BX = radius
  2909. SeeAlso: AH=49h,AH=4Dh
  2910. --------V-104D-------------------------------
  2911. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  2912.     AH = 4Dh
  2913.     DI = x of center
  2914.     BP = y of center
  2915.     BX = radius
  2916. SeeAlso: AH=49h,AH=4Ch
  2917. --------V-104E-------------------------------
  2918. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  2919.     AH = 4Eh
  2920.     DI = x coordinate of an interior point
  2921.     BP = y coordinate of an interior point
  2922. Desc:    fill a convex polygonal area bounded by a contiguous line of the
  2923.       opposite color with the border color
  2924. Note:    the first fill makes the figure solid, the second erases it
  2925. SeeAlso: AH=4Ah
  2926. --------V-104F00-----------------------------
  2927. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  2928.     AX = 4F00h
  2929.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  2930. Return: AL = 4Fh function supported
  2931.     AH = status
  2932.         00h successful
  2933.         01h failed
  2934. Desc:    determine whether VESA BIOS extensions are present and the capabilities
  2935.       supported by the display adapter
  2936. SeeAlso: AX=4F01h,AX=7F00h
  2937. Index:    installation check;VESA
  2938.  
  2939. Format of SuperVGA information:
  2940. Offset    Size    Description
  2941.  00h  4 BYTEs    signature ('VESA')
  2942.  04h    WORD    VESA version number
  2943.  06h    DWORD    pointer to OEM name
  2944.         "761295520" for ATI
  2945.  0Ah  4 BYTEs    capabilities
  2946.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  2947.         (list of words terminated with FFFFh)
  2948.  12h 238 BYTEs    reserved
  2949. --------V-104F01-----------------------------
  2950. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  2951.     AX = 4F01h
  2952.     CX = SuperVGA video mode
  2953.     ES:DI -> 256-byte buffer mode information (see below)
  2954. Return: AL = 4Fh function supported
  2955.     AH = status
  2956.         00h successful
  2957.         01h failed
  2958. Desc:    determine the attributes of the specified video mode
  2959. SeeAlso: AX=4F00h,AX=4F02h
  2960.  
  2961. Format of mode information:
  2962. Offset    Size    Description
  2963.  00h    WORD    mode attributes
  2964.         bit 0: mode supported
  2965.         bit 1: optional information available
  2966.         bit 2: BIOS output supported
  2967.         bit 3: set if color, clear if monochrome
  2968.         bit 4: set if graphics mode, clear if text mode
  2969.  02h    BYTE    window A attributes
  2970.         bit 0: exists
  2971.         bit 1: readable
  2972.         bit 2: writable
  2973.         bits 3-7 reserved
  2974.  03h    BYTE    window B attributes (as for window A)
  2975.  04h    WORD    window granularity in K
  2976.  06h    WORD    window size in K
  2977.  08h    WORD    start segment of window A
  2978.  0Ah    WORD    start segment of window B
  2979.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  2980.  10h    WORD    bytes per scan line
  2981. ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
  2982.  12h    WORD    width in pixels
  2983.  14h    WORD    height in pixels
  2984.  16h    BYTE    width of character cell in pixels
  2985.  17h    BYTE    height of character cell in pixels
  2986.  18h    BYTE    number of memory planes
  2987.  19h    BYTE    number of bits per pixel
  2988.  1Ah    BYTE    number of banks
  2989.  1Bh    BYTE    memory model type (see below)
  2990.  1Ch    BYTE    size of bank in K
  2991.  1Dh    BYTE    number of image pages
  2992.  1Eh    BYTE    reserved (0)
  2993. ---VBE v1.2+---
  2994.  1Fh    BYTE    red mask size
  2995.  20h    BYTE    red field position
  2996.  21h    BYTE    green mask size
  2997.  22h    BYTE    green field size
  2998.  23h    BYTE    blue mask size
  2999.  24h    BYTE    blue field size
  3000.  25h    BYTE    reserved mask size
  3001.  26h    BYTE    reserved mask position
  3002.  27h    BYTE    direct color mode info
  3003.  28h    BYTE    reserved (0)
  3004.  
  3005. Values for memory model type:
  3006.  00h text
  3007.  01h CGA graphics
  3008.  02h HGC graphics
  3009.  03h 16-color (EGA) graphics
  3010.  04h packed pixel graphics
  3011.  05h "sequ 256" (non-chain 4) graphics
  3012.  06h direct color (HiColor, 24-bit color)
  3013.  07h YUV (luminance-chrominance)
  3014.  08h-0Fh reserved for VESA
  3015.  10h-FFh OEM memory models
  3016. --------V-104F02-----------------------------
  3017. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  3018.     AX = 4F02h
  3019.     BX = mode
  3020.         bit 15 set means don't clear video memory
  3021. Return: AL = 4Fh function supported
  3022.     AH = status
  3023.         00h successful
  3024.         01h failed
  3025. SeeAlso: AX=4F01h,AX=4F03h
  3026.  
  3027. Values for VESA video mode:
  3028.  00h-FFh OEM video modes (see AH=00h)
  3029.  100h    640x400x256
  3030.  101h    640x480x256
  3031.  102h    800x600x16
  3032.  103h    800x600x256
  3033.  104h    1024x768x16
  3034.  105h    1024x768x256
  3035.  106h    1280x1024x16
  3036.  107h    1280x1024x256
  3037.  108h    80x60 text
  3038.  109h    132x25 text
  3039.  10Ah    132x43 text
  3040.  10Bh    132x50 text
  3041.  10Ch    132x60 text
  3042. ---VBE v1.2---
  3043.  10Dh    320x200x32K
  3044.  10Eh    320x200x64K
  3045.  10Fh    320x200x16M
  3046.  110h    640x480x32K
  3047.  111h    640x480x64K
  3048.  112h    640x480x16M
  3049.  113h    800x600x32K
  3050.  114h    800x600x64K
  3051.  115h    800x600x16M
  3052.  116h    1024x768x32K
  3053.  117h    1024x768x64K
  3054.  118h    1024x768x16M
  3055.  119h    1280x1024x32K
  3056.  11Ah    1280x1024x64K
  3057.  11Bh    1280x1024x16M
  3058. Index:    video modes
  3059.  
  3060. Values for S3 OEM video mode:
  3061.  201h    640x480x256
  3062.  202h    800x600x16
  3063.  203h    800x600x256
  3064.  204h    1024x768x16
  3065.  205h    1024x768x256
  3066.  206h    1280x960x16
  3067.  208h    1280x1024x16
  3068.  301h    640x480x32K
  3069. Index:    video modes
  3070. --------V-104F03-----------------------------
  3071. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  3072.     AX = 4F03h
  3073. Return: AL = 4Fh function supported
  3074.     AH = status
  3075.         00h successful
  3076.         01h failed
  3077.     BX = video mode (see AX=4F02h)
  3078. SeeAlso: AX=4F02h
  3079. --------V-104F04-----------------------------
  3080. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  3081.     AX = 4F04h
  3082.     DL = subfunction
  3083.         00h get state buffer size
  3084.         Return: BX = number of 64-byte blocks needed
  3085.         01h save video states
  3086.         ES:BX -> buffer
  3087.         02h restore video states
  3088.         ES:BX -> buffer
  3089.     CX = flags for states to save/restore
  3090.         bit 0: video hardware state
  3091.         bit 1: video BIOS data state
  3092.         bit 2: video DAC state
  3093.         bit 3: SuperVGA state
  3094. Return: AL = 4Fh function supported
  3095.     AH = status
  3096.         00h successful
  3097.         01h failed
  3098. --------V-104F05-----------------------------
  3099. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  3100.     AX = 4F05h
  3101.     BH = subfunction
  3102.         00h select video memory window
  3103.         DX = window address in video memory (in granularity units)
  3104.         01h get video memory window
  3105.         Return: DX = window address in video memory (in gran. units)
  3106.     BL = window number
  3107.         00h window A
  3108.         01h window B
  3109. Return: AL = 4Fh function supported
  3110.     AH = status
  3111.         00h successful
  3112.         01h failed
  3113. SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  3114. --------V-104F06-----------------------------
  3115. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH
  3116.     AX = 4F06h
  3117.     BL = function
  3118.         00h set scan line length
  3119.         CX = desired width in pixels
  3120.         01h get scan line length
  3121. Return: AL = 4Fh if function supported
  3122.     AH = status
  3123.         00h successful
  3124.         01h failed
  3125.     BX = bytes per scan line
  3126.     CX = number of pixels per scan line
  3127.     DX = maximum number of scan lines
  3128. Notes:    if the desired width is not achievable, the next larger width will be
  3129.       set
  3130.     the scan line may be wider than the visible area of the screen
  3131.     this function is valid in text modes, provided that values are
  3132.       multiplied by the character cell width/height
  3133. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  3134. --------V-104F07BH00-------------------------
  3135. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
  3136.     AX = 4F07h
  3137.     BH = 00h (reserved)
  3138.     BL = function
  3139.         00h set display start
  3140.         CX = leftmost displayed pixel in scan line
  3141.         DX = first displayed scan line
  3142.         01h get display start
  3143.         Return: BH = 00h
  3144.             CX = leftmost displayed pixel in scan line
  3145.             DX = first displayed scan line
  3146. Return: AL = 4Fh if function supported
  3147.     AH = status
  3148.         00h successful
  3149.         01h failed
  3150. Note:    this function is valid in text modes, provided that values are
  3151.       multiplied by the character cell width/height
  3152. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  3153. --------V-104F08-----------------------------
  3154. INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
  3155.     AX = 4F08h
  3156.     BL = function
  3157.         00h set DAC palette width
  3158.         BH = desired number of bits per primary color
  3159.         01h get DAC palette width
  3160. Return: AL = 4Fh if function supported
  3161.     AH = status
  3162.     BH = current number of bits per primary (06h = standard VGA)
  3163. --------V-104FFF-----------------------------
  3164. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  3165.     AX = 4FFFh
  3166.     DL = new state (00h off, 01h on)
  3167. Return: AX = 0000h if successful
  3168. --------U-1050-------------------------------
  3169. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  3170.     AH = 50h
  3171. Return: BX = 1954h if installed
  3172.         AL = 00 if inactive, nonzero if active
  3173. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  3174. SeeAlso: AH=51h
  3175. --------J-105000-----------------------------
  3176. INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
  3177.     AX = 5000h
  3178.     BX = country code
  3179.         0001h USA (English), 0051h Japan
  3180. Return: AL = status
  3181.         00h successful
  3182.         01h bad country code
  3183.         02h other error
  3184. SeeAlso: AX=5001h,INT 16/AX=5000h
  3185. --------J-105001-----------------------------
  3186. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  3187.     AX = 5001h
  3188. Return: AL = status
  3189.         00h successful
  3190.         BX = country code
  3191.         02h error
  3192. SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
  3193. --------V-105049-----------------------------
  3194. INT 10 - VIDEO - SCREENR v1.55+ - API
  3195.     AX = 5049h ('PI')
  3196.     BX = function
  3197.         0000h installation check
  3198.         0001h lock mode
  3199.         0002h unlock mode
  3200.         0003h lock palette
  3201.         0004h unlock palette
  3202. Return: AX = 0000h if installed
  3203.         BX = TSR version (BH=major,BL=minor)
  3204.         CL = mode locking status
  3205.         00h mode not locked
  3206.         01h mode locked : INT 10/AH=00h disabled
  3207.         CH = palette locking status
  3208.         00h palette not locked
  3209.         01h palette locked, the following functions are disabled:
  3210.             AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
  3211. Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
  3212.       utility.
  3213. Index:    installation check;SCREENR
  3214. --------U-1051-------------------------------
  3215. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  3216.     AH = 51h
  3217.     AL = state
  3218.         00h disable
  3219.         nonzero enable
  3220. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  3221. SeeAlso: AH=50h"SCROLOCK"
  3222. --------J-105100-----------------------------
  3223. INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
  3224.     AX = 5100h
  3225.     BH = character width in bits (10h)
  3226.     BL = character height (10h)
  3227.     DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
  3228.     ES:BP -> character bitmap
  3229. Return: AL = status (00h successful, 01h failed)
  3230. SeeAlso: AX=5101h,INT 1F
  3231. --------J-105101-----------------------------
  3232. INT 10 - VIDEO - AX PC - READ CHARACTER
  3233.     AX = 5101h
  3234.     BH = character width in bits
  3235.     BL = character height
  3236.     DX = character code (DH = 00h if 8-bit character)
  3237.     ES:BP -> buffer for character bitmap
  3238. Return: AL = status (00h successful, 01h failed)
  3239. SeeAlso: AH=09h,AX=5100h
  3240. --------J-105200-----------------------------
  3241. INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
  3242.     AX = 5200h
  3243.     BX = segment of buffer
  3244. SeeAlso: AX=5201h
  3245. --------J-105201-----------------------------
  3246. INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
  3247.     AX = 5201h
  3248. Return: BX = segment of buffer or 0000h if failed
  3249. SeeAlso: AX=8300h,AH=FEh
  3250. ----------1053-------------------------------
  3251. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  3252.     AH = 53h
  3253.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  3254.         .PR2)
  3255. Return: ???
  3256. SeeAlso: AH=55h
  3257. ----------1055-------------------------------
  3258. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  3259.     AH = 55h
  3260. Return: FXSHOW.EXE removed from memory
  3261. SeeAlso: AH=53h
  3262. --------V-105555-----------------------------
  3263. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  3264.     AX = 5555h
  3265. Return: AX = AAAAh    if installed
  3266.     BX:CX -> ??? routine in SMS.COM resident portion
  3267.           -> data area in VCONFIG
  3268. Program: Super Switch (SMS.COM) is a video mode switch program supplied with
  3269.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  3270. SeeAlso: INT 10/AH=00h,INT 2F/AX=6400h
  3271.  
  3272. Format of data area:
  3273. Offset    Size    Description
  3274.  00h    DWORD    original INT 09 vector
  3275.  04h    DWORD    original INT 10 vector
  3276.  08h    DWORD    original INT 1C vector
  3277.  0Ch    WORD    screen saver state, 0=off, 1=on
  3278.  0Eh    WORD    blanking interval in clock ticks
  3279. --------V-106A00BX0000-----------------------
  3280. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  3281.     AX = 6A00h
  3282.     BX = 0000h
  3283.     CX = 0000h
  3284.     DX = buffer length (may be 0)
  3285.     ES:DI -> buffer
  3286. Return: BX = number of bytes stored in buffer
  3287.     CX = bytes required for all descriptions (0 if no DGIS)
  3288. Note:    buffer contains descriptions and addresses of DGIS-compatible
  3289.       display(s) and printer(s)
  3290. SeeAlso: AX=6A02h
  3291. --------V-106A01CX0000-----------------------
  3292. INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
  3293.     AX = 6A01h
  3294.     CX = 0000h
  3295.     ES:DI = address of device to send INT 10 output to
  3296. Return: CX = 0000h  output could not be redirected
  3297.          else INT 10h output now routed to requested display
  3298. SeeAlso: AX=6A02h
  3299. --------V-106A02-----------------------------
  3300. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  3301.     AX = 6A02h
  3302.     ES:DI = 0000h:0000h
  3303. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  3304.         else address of the current DGIS INT 10 display
  3305. SeeAlso: AX=6A00h,AX=6A01h
  3306. --------V-106E00------------------------------------
  3307. INT 10 - Paradise VGA internal - GET ???
  3308.     AX = 6E00h
  3309. Return: AH = ??? (depends on serial number)
  3310.     AL = ???
  3311.     BX = ???
  3312.     CL = ???
  3313.     CH = ???
  3314.     DX = ???
  3315. SeeAlso: AX=6E04,AX=6E05
  3316. --------V-106E04-------------------------------------
  3317. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  3318.     AX = 6E04h
  3319. Return: BX = screen width (columns)
  3320.     CX = screen height (lines)
  3321.     AH = ??? (05h or FFh)
  3322.     AL = ??? (04h or video mode)
  3323. SeeAlso: AX=6E00,AX=6E05
  3324. --------V-106E05-------------------------------------
  3325. INT 10 - Paradise VGA internal - SET MODE
  3326.     AX = 6E05h
  3327.     BL = mode
  3328. Note:    like AH=0, AL=BL.
  3329. SeeAlso: AH=00,AX=6E00,AX=6E04,AX=6F05h
  3330. --------V-106F00BX0000-----------------------
  3331. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - INSTALLATION CHECK
  3332.     AX = 6F00h
  3333.     BX = 0000h
  3334. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  3335.     BX = 4850h ('HP') indicates HP Extended BIOS video functions present
  3336. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  3337. --------V-106F01-----------------------------
  3338. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - GET MONITOR INFO
  3339.     AX = 6F01h
  3340. Return: AL = monitor type code (HP,VEGA VGA only) (see below)
  3341.     AH = status register information
  3342.          bit  0 = display enable
  3343.             0 = display enabled
  3344.             1 = vertical or horizontal retrace in progress
  3345.          bit  1 = light pen flip flop set
  3346.          bit  2 = light pen switch activated
  3347.          bit  3 = vertical sync
  3348.          bit  4 = monitor resolution
  3349.             0 = high resolution (>200 lines)
  3350.             1 = low resolution (<=200 lines)
  3351.          bit  5 = display type
  3352.             0 = color
  3353.             1 = monochrome
  3354.          bits6,7= diagnostic bits
  3355.     CL = current value of Extended Control register (HP Ext BIOS, and only
  3356.         if AL=41h)
  3357. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  3358.  
  3359. Values for monitor type code (HP Extended BIOS):
  3360.  00h    non-HP card with ROM and possibly its own INT 10h driver
  3361.  41h    MultiMode video display adapter
  3362.  42h-44h reserved
  3363.  45h    industry standard monochrome display adapter
  3364.  46h    industry standard color display adapter
  3365.  51h    reserved
  3366. --------V-106F02-----------------------------
  3367. INT 10 - VIDEO - HP Vetra EXTENDED BIOS - SET MONITOR INFO
  3368.     AX = 6F02h
  3369.     BL = new value for extended control register (see below)
  3370. Return:    nothing
  3371. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  3372.       is installed
  3373.     the Extended Control register is at I/O address 3DDh
  3374. SeeAlso: AX=6F01h,AX=6F03h
  3375.  
  3376. Bitfields for extended control register:
  3377.  bit 0    screen resolution (0 = 200 lines, 1 = 400 lines)
  3378.  bit 1    underline enable (if set, 'blue' bit of fg color = underl)
  3379.  bit 2    font (0 = Standard-8, 1 = HP-Roman-8)
  3380.  bit 3    memory disabled for CPU access
  3381.  bit 4    allow access to full 32K memory instead of wrapping at 16K
  3382.  bit 5    select second 16K page instead of first
  3383.  bits 6,7 unused
  3384. --------V-106F03-----------------------------
  3385. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - MODIFY MONITOR INFO
  3386.     AX = 6F03h
  3387.     BH = exclude mask (set bits are not modified)
  3388.     BL = new values for bits indicated by BH (see AX=6F02h)
  3389. Return:    nothing
  3390. Note:    this function is only valid when an HP MultiMode Video Display Adapter
  3391.       is installed
  3392. SeeAlso: AX=6F01h,AX=6F02h
  3393. --------V-106F04-----------------------------
  3394. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
  3395.     AX = 6F04h
  3396. Return: AL = current video mode (see AX=6F05h)
  3397.     BX = horizontal columns (text) or pixels (graphics)
  3398.     CX = vertical columns (text) or pixels (graphics)
  3399. SeeAlso: AX=6F05h
  3400. --------V-106F05-----------------------------
  3401. INT 10 - VIDEO - Video7 VGA, VEGA EXTENDED EGA/VGA - SET VIDEO MODE
  3402.     AX = 6F05h
  3403.     BL = mode (see below)
  3404. Notes:    also supported by the HP Vectra Extended BIOS
  3405.     on the HP Vectra, this function rather than AH=00h must be used to
  3406.       return to an IBM-standard mode after setting an HP-specified mode
  3407.       from 08h to 0Fh.
  3408. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3409.  
  3410. Values for video mode:
  3411.       text/ text pixel     pixel    colors    disp    scrn  system
  3412.       grph resol  box    resoltn        page    addr
  3413.  00h-13h = standard IBM modes (see AH=00h)
  3414.  08h = T   80x27           mono             HP MultiMode Video 
  3415.  09h = T   80x27                     HP MultiMode Video 
  3416.  0Ah = T   40x27           mono             HP MultiMode Video 
  3417.  0Bh = T   40x27                     HP MultiMode Video 
  3418.  0Ch = Reserved                         HP MultiMode Video 
  3419.  0Dh = G        640x400                 HP MultiMode Video 
  3420.  0Eh = G        320x400                 HP MultiMode Video 
  3421.  0Fh = G        320x400                 HP MultiMode Video 
  3422.  40h = T   80x43  8x8                     Video7/VEGA VGA
  3423.  41h = T  132x25  8x14                     Video7/VEGA VGA
  3424.  42h = T  132x43  8x8                     Video7/VEGA VGA
  3425.  43h = T   80x60  8x8                     Video7/VEGA VGA
  3426.  44h = T  100x60  8x8                     Video7/VEGA VGA
  3427.  45h = T  132x28  8x8                     Video7/VEGA VGA
  3428.  60h = G        752x410      16             Video7 VGA, VEGA VGA
  3429.  61h = G        720x540      16             Video7 VGA, VEGA VGA
  3430.      = G        720x540      16             Northgate, Headland 1024i
  3431.  62h = G        800x600      16             Video7 VGA, VEGA Ext EGA
  3432.      = G        800x600      16             Headland 1024i
  3433.  63h = G           1024x768       2             Video7 VGA
  3434.  64h = G           1024x768       4             Video7 VGA
  3435.  65h = G           1024x768      16             Video7 VGA, VEGA Ext EGA
  3436.      = G           1024x768      16             Headland 1024i
  3437.  66h = G        640x400     256             Video7 VGA, VEGA Ext VGA
  3438.      = G        640x400     256             Northgate, Headland 1024i
  3439.  67h = G        640x480     256             Video7 VGA, VEGA Ext VGA
  3440.      = G        640x480     256             Headland 1024i
  3441.  68h = G        720x540     256             Video7 VGA, VEGA Ext VGA
  3442.      = G        720x540     256             Headland 1024i
  3443.  69h = G        800x600     256             Video7 VGA, VEGA Ext VGA
  3444.      = G        800x600     256             Headland 1024i
  3445.  70h = G        752x410      16gray         Video7 VGA, VEGA VGA
  3446.  71h = G        720x540      16gray         Video7 VGA, VEGA VGA
  3447.  72h = G        800x600      16gray         Video7 VGA
  3448.  73h = G           1024x768       2gray         Video7 VGA
  3449.  74h = G           1024x768       4gray         Video7 VGA
  3450.  75h = G           1024x768      16gray         Video7 VGA
  3451.  76h = G        640x400     256gray         Video7 VGA
  3452.  77h = G        640x480     256gray         Video7 VGA
  3453.  78h = G        720x540     256gray         Video7 VGA
  3454.  79h = G        800x600     256gray         (future)
  3455. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3456. Index:    video modes
  3457. --------V-106F06-----------------------------
  3458. INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
  3459.     AX = 6F06h
  3460.     BL = Autoswitch mode select
  3461.          00h select EGA/VGA-only modes
  3462.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  3463.          02h select 'bootup' CGA/MGA modes
  3464.     BH = enable/disable (00h enable, 01h = disable selection)
  3465. --------V-106F07-----------------------------
  3466. INT 10 - VIDEO -  Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
  3467.     AX = 6F07h
  3468. Return: AL = 6Fh
  3469.     AH = bits 0-6 = number of 256K blocks of video memory
  3470.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  3471.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  3472.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  3473.     CX = 0000h
  3474. SeeAlso: AH=12h/BL=10h
  3475. --------V-1070-------------------------------
  3476. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
  3477.     AH = 70h
  3478. Return: AX:BX -> WORD containing green plane's offset
  3479.     AX:CX -> WORD containing green plane's segment
  3480.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  3481.             4000) planes
  3482. SeeAlso: AH=71h
  3483. --------V-107000BX0000-----------------------
  3484. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  3485.     AX = 7000h
  3486.     BX = 0000h
  3487. Return: AL = 70h if Trident-based Everex card
  3488.     CL = monitor type (see below)
  3489.     CH = feature bits (see below)
  3490.     DX = video board info
  3491.         bits 4-15: board ID model
  3492.         bits 0-3:  board ID revision
  3493.     DI = BCD BIOS version number
  3494. Note:    board models for Trident-based Everex cards:
  3495.         236h Ultragraphics II
  3496.         620h Vision VGA
  3497.         673h EVGA
  3498.         678h Viewpoint
  3499.  
  3500. Values for monitor type:
  3501.  00h mono
  3502.  01h CGA
  3503.  02h EGA
  3504.  03h digital multifrequency
  3505.  04h IBM PS/2
  3506.  05h IBM 8514
  3507.  06h SuperVGA
  3508.  07h analog multifrequency
  3509.  08h super multifrequency
  3510.  
  3511. Bitfields for feature bits:
  3512.  bits 7,6  memory size
  3513.      00 = 256K
  3514.     01 = 512K
  3515.     10 = 1024K
  3516.     11 = 2048K
  3517.  bit 5    special oscillator present
  3518.  bit 4    VGA protect enabled
  3519.  bit 0    6845 emulation
  3520. --------V-107000BX0004-----------------------
  3521. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  3522.     AX = 7000h
  3523.     BX = 0004h
  3524. Return: ES:DI -> FAR paging function (call with DL = page to set)
  3525. Note:    the word preceding ES:DI is the length of the function in bytes, and
  3526.       the last byte of the function is a FAR return instruction.
  3527. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  3528. --------V-107000BX0005-----------------------
  3529. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  3530.     AX = 7000h
  3531.     BX = 0005h
  3532.     CL = maximum number of modes to get info for
  3533.     CH = mode type to get info for (see below)
  3534.     DL = monitor type to get info for
  3535.     ES:DI -> buffer for mode info (see below)
  3536. Return: CL = total number of modes fitting criteria
  3537.     CH = size of each info record
  3538. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  3539.  
  3540. Values for mode type:
  3541.  00h all modes
  3542.  01h monochrome text modes
  3543.  02h color text modes
  3544.  03h four-color CGA graphics modes
  3545.  04h two-color CGA graphics modes
  3546.  05h 16-color graphics modes
  3547.  06h 256-color graphics modes
  3548.  
  3549. Format of mode information record:
  3550. Offset    Size    Description
  3551.  00h    BYTE    mode number (bit 7 set if extended mode)
  3552.  01h    BYTE    mode type (see above)
  3553.  02h    BYTE    info bits
  3554.         bits 7,6 reserved
  3555.              5     monochrome mode
  3556.              4     interlaced display
  3557.              3     requires special oscillator
  3558.              2,1 memory required
  3559.              00 = 256K
  3560.              01 = 512K
  3561.              10 = 1024K
  3562.              11 = 2048K
  3563.              0     reserved
  3564.  03h    BYTE    font height
  3565.  04h    BYTE    text columns on screen
  3566.  05h    BYTE    text rows on screen
  3567.  06h    WORD    number of scan lines
  3568.  08h    BYTE    color information
  3569.         bits 7-4 reserved
  3570.              3-0 bits per pixel
  3571. --------V-1071-------------------------------
  3572. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
  3573.     AH = 71h
  3574. Return: AX:BX -> WORD containing segment address of INCRAM
  3575.     AX:CX -> WORD containing offset of INCRAM
  3576. SeeAlso: AH=70h
  3577. --------V-1072-------------------------------
  3578. INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
  3579.     AH = 72h
  3580.     AL = number of columns to shift scroll area, 00h to clear entire area
  3581.     BH = new attributes for blanked columns at left
  3582.     CH,CL = row, column of upper left corner of scroll area
  3583.     DH,DL = row, column of lower right corner of scroll area
  3584. SeeAlso: AH=06h,AH=07h,AH=73h,INT 15/AH=12h/BH=05h
  3585. --------V-1073------------------------------
  3586. INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
  3587.     AH = 73h
  3588.     AL = number of columns to shift scroll area, 00h to clear entire area
  3589.     BH = new attributes for blanked columns at right
  3590.     CH,CL = row, column of upper left corner of scroll area
  3591.     DH,DL = row, column of lower right corner of scroll area
  3592. SeeAlso: AH=06h,AH=07h,AH=72h,INT 15/AH=12h/BH=05h
  3593. --------V-107F00-----------------------------
  3594. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  3595.     AX = 7F00h
  3596. Return: AL != 7Fh if not supported
  3597.     AL = 7Fh if supported
  3598.         AH = status
  3599.         00h successful
  3600.             ES:DI -> info structure (see below)
  3601.         01h failed
  3602. SeeAlso: AX=4F00h
  3603.  
  3604. Format of info structure:
  3605. Offset    Size    Description
  3606.  00h    DWORD    pointer to VESA function dispatch table
  3607.  04h    DWORD    pointer to SOLLEX function dispatch table
  3608.  08h    DWORD    pointer to VESA SuperVGA info (see AX=4F00h)
  3609.  0Ch    DWORD    pointer to mode info structure table, consisting of
  3610.         alternating ResInfo (see below) and VESA mode information
  3611.         (see AX=4F01h) blocks, terminated with an FFFFh word
  3612.  10h    DWORD    pointer to font info structure table (see below)
  3613.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  3614.  16h    DWORD    pointer to ASCIZ ID string
  3615.  1Ah    DWORD    pointer to timeout reset table
  3616.         array of bytes, each a multiple of the minimum time increment
  3617.  1Eh    WORD    minimum time increment in timer ticks
  3618.  20h    BYTE    inverse options supported
  3619.         bit 0: inverse supported
  3620.         bits 1-7: reserved
  3621.  21h    BYTE    normal color value
  3622.  22h    BYTE    inverse color value
  3623.  23h    WORD    port to be accessed for normal/inverse settings
  3624.  25h    WORD    type of interface chip (currently undefined)
  3625.  27h    WORD    program operational mode
  3626.         bits 1-0: 00 no preference
  3627.               01 terse (minimum detail in program messages)
  3628.               10 verbose
  3629.               11 use menus if supported, verbose mode otherwise
  3630.         bits 7-2: reserved
  3631.  29h    WORD    SOLLEX specification version
  3632.  2Bh    WORD    version of VESA/SOLLEX implementation
  3633.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  3634.  2Eh    DWORD    offset to unused section of the extensions ROM
  3635.  31h 16 BYTEs    reserved
  3636. Note:    all DWORD pointers initially require segment fixups; if the segment
  3637.       is 0000h, it should be changed to the returned ES, otherwise it
  3638.       may be assumed to be correct
  3639.  
  3640. Format of ResInfo:
  3641. Offset    Size    Description
  3642.  00h    WORD    16-bit mode number
  3643.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  3644.  04h    WORD    display info (see AX=7F01h/BL=01h)
  3645.  06h    DWORD    pointer to video parameter table
  3646.  0Ah    BYTE    replacement entry in master Video Parameter
  3647.  0Bh    BYTE    mode requested for mode set by BIOS
  3648.  0Ch    DWORD    pointer to LoadReg table
  3649.  10h    BYTE    index into table of clock values (see below)
  3650.  
  3651. Format of font info table [array] entry:
  3652. Offset    Size    Description
  3653.  00h    BYTE    required font height
  3654.  01h    BYTE    parameter to load text mode font
  3655.  02h    BYTE    parameter to load graphics mode font
  3656.  
  3657. Values for clock value index:
  3658.  00h    25 MHz
  3659.  01h    28 MHz
  3660.  02h    PCLK
  3661.  03h    31.5 MHz (VESA 640x480)
  3662.  04h    reserved
  3663.  05h    16 MHz (EGA)
  3664.  06h    PCLK
  3665.  07h    24 MHz (EGA)
  3666.  08h    25 MHz
  3667.  09h    28 MHz
  3668.  0Ah    36 MHz
  3669.  0Bh    45 MHz (for 1024x768)
  3670.  0Ch    80 MHz
  3671.  0Dh    40 MHz
  3672.  0Eh    65 MHz
  3673.  0Fh     1 MHz (for powerdown)
  3674. --------V-107F01BL00-------------------------
  3675. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  3676.     AX = 7F01h
  3677.     BL = 00h
  3678.     CX = adapter request
  3679.         bits 1-0: adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  3680.         bit 2:    reserved
  3681.         bits 4-3: change displays (00 none, 01 analog 10 digital 11 panel)
  3682.         bits 6-5: desired monitor sense (01 color, 10 mono, 11=8514)
  3683.         bit 7:    lock override
  3684.         bit 8:    alternate adapter mode
  3685.         bits 15-9: reserved
  3686. Return:    AL = 7Fh if supported
  3687.         AH = status
  3688.         00h successful
  3689.         01h failed
  3690.     AL != 7Fh if not supported
  3691. Note:    initializes video hardware to a particular standard
  3692. SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
  3693. --------V-107F01BL01-------------------------
  3694. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  3695.     AX = 7F01h
  3696.     BL = 01h
  3697. Return: AL != 7Fh if not supported
  3698.     AL = 7Fh if supported
  3699.         AH = status
  3700.         00h successful
  3701.         01h failed
  3702.         BX = adapter type (see AX=7F01h/BL=00h)
  3703.         DX = display type (see below)
  3704. SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
  3705.  
  3706. Bitfields for display type:
  3707.  bits 1-0 monitor sense (00 none, 01 color, 10 mono, 11=8514)
  3708.  bit 2    multi-frequency analog monitor active
  3709.  bit 3    LCD panel active
  3710.  bit 4    plasma/electroluminescent panel active
  3711.  bit 5    PS/2-type monitor active
  3712.  bit 6    multi-frequency digital monitor active
  3713.  bit 7    Enhanced Color Display monitor active
  3714.  bit 8    alternate display active
  3715.  bits 15-9 reserved
  3716. --------V-107F01BL02-------------------------
  3717. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  3718.     AX = 7F01h
  3719.     BL = 02h
  3720.     CX = adapter request (see AX=7F01h/BL=00h)
  3721. Return: AL != 7Fh if not supported
  3722.     AL = 7Fh if supported
  3723.         AH = status
  3724.         00h requested setting can successfully be made
  3725.         01h requested setting not available in this configuration
  3726. SeeAlso: AX=7F00h,AX=7F01h/BL=00h
  3727. --------V-107F02BL00-------------------------
  3728. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  3729.     AX = 7F02h
  3730.     BL = 00h
  3731.     CX = display output setting (see below)
  3732. Return: AL != 7Fh if not supported
  3733.     AL = 7Fh if supported
  3734.         AH = status
  3735.         00h successful
  3736.         01h failed
  3737. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  3738.  
  3739. Bitfields for display output setting:
  3740.  bit 0    CRTC control in bits 2,1 valid
  3741.  bit 1    enable digital output
  3742.  bit 2    enable analog output
  3743.  bit 3    panel control in bits 5,4 valid
  3744.  bit 4    enable LCD output
  3745.  bit 5    enable plasma/EL output
  3746.  bit 6    inverse control in bit 7 valid
  3747.  bit 7    0=normal, 1=inverse
  3748.  bits 15-8 reserved
  3749. --------V-107F02BL01-------------------------
  3750. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  3751.     AX = 7F02h
  3752.     BL = 01h
  3753. Return: AL != 7Fh if not supported
  3754.     AL = 7Fh if supported
  3755.         AH = status
  3756.         00h successful
  3757.             BX = display output setting (see AX=7F02h/BL=00h)
  3758.             CX = displays attached (see below)
  3759.         01h failed
  3760. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  3761.  
  3762. Bitfields for displays attached:
  3763.  bit 0    PS/2 display on analog output
  3764.  bit 1    multi-frequency monitor on analog output
  3765.  bit 2    LCD panel attached
  3766.  bit 3    plasma/electroluminescent panel attached
  3767.  bit 4    multi-frequency monitor on digital output
  3768.  bit 5    Enhanced Color Display attached to digital outpt
  3769.  bit 6    alternate display
  3770.  bits 15-7 reserved
  3771. --------V-107F03BL00-------------------------
  3772. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  3773.     AX = 7F03h
  3774.     BL = 00h
  3775.     CX = support type
  3776.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  3777.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  3778.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  3779. Return: AL != 7Fh if not supported
  3780.     AL = 7Fh if supported
  3781.         AH = status
  3782.         00h successful
  3783.             CX = size of video support code
  3784.             DX = segment of physical video support (0000h if no ROM)
  3785.             ES = segment of active video support
  3786.             ES:DI -> information block (DI = 0000h if none available)
  3787.         01h failed
  3788. SeeAlso: AX=7F03h/BL=01h
  3789. --------V-107F03BL01-------------------------
  3790. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  3791.     AX = 7F03h
  3792.     BL = 01h
  3793.     CX = support request
  3794.     ES = segment of support code
  3795. Return: AL != 7Fh if not supported
  3796.     AL = 7Fh if supported
  3797.         AH = status
  3798.         00h successful
  3799.         01h failed
  3800. Note:    initializes the indicated video support by calling ES:0003h; this
  3801.       function may be used to switch the active video support back to
  3802.       ROM after AX=7F03h/BL=02h
  3803. SeeAlso: AX=7F03h/BL=00h
  3804. --------V-107F03BL02-------------------------
  3805. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  3806.     AX = 7F03h
  3807.     BL = 02h
  3808.     CX = support request
  3809.     ES = destination segment
  3810. Return: AL != 7Fh if not supported
  3811.     AL = 7Fh if supported
  3812.         AH = status
  3813.         00h successful
  3814.         01h failed
  3815. SeeAlso: AX=7F00h,AX=7F03h/BL=01h
  3816. --------V-107F04BL00-------------------------
  3817. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  3818.     AX = 7F04h
  3819.     BL = 00h
  3820.     CX = new power state
  3821. Return: AL != 7Fh if not supported
  3822.     AL = 7Fh if supported
  3823.         AH = status
  3824.         00h successful
  3825.         01h failed
  3826. Note:    higher values progressively reduce the operations available on the
  3827.       video adapter while yielding increasing power savings
  3828. SeeAlso: AX=7F00h,AX=7F04h/BL=01h
  3829. --------V-107F04BL01-------------------------
  3830. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  3831.     AX = 7F04h
  3832.     BL = 01h
  3833. Return: AL != 7Fh if not supported
  3834.     AL = 7Fh if supported
  3835.         AH = status
  3836.         00h successful
  3837.             CX = current power state
  3838.             DX = maximum state
  3839.         01h failed
  3840. SeeAlso: AX=7F00h,AX=7F04h/BL=00h
  3841. --------V-107F04BL02-------------------------
  3842. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  3843.     AX = 7F04h
  3844.     BL = 02h
  3845.     CX = timeout reset
  3846. Return: AL != 7Fh if not supported
  3847.     AL = 7Fh if supported
  3848.         AH = status
  3849.         00h successful
  3850.         01h failed
  3851. SeeAlso: AX=7F00h,AX=7F04h/BL=03h
  3852. --------V-107F04BL03-------------------------
  3853. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  3854.     AX = 7F04h
  3855.     BL = 03h
  3856. Return: AL != 7Fh if not supported
  3857.     AL = 7Fh if supported
  3858.         AH = status
  3859.         00h successful
  3860.             BX = time increment
  3861.             CX = current timeout reset
  3862.             DX = maximum timeout reset
  3863.             ES:DI -> timeout reset table (array of bytes)
  3864.         01h failed
  3865. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  3866. SeeAlso: AX=7F00h,AX=7F04h/BL=02h
  3867. --------V-107F05-----------------------------
  3868. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  3869.     AX = 7F05h
  3870.     ES:DI -> register value table (see below)
  3871. Return: AL != 7Fh if not supported
  3872.     AL = 7Fh if supported
  3873.         AH = status
  3874.         00h successful
  3875.         01h failed
  3876. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  3877.  
  3878. Format of register value table:
  3879. Offset    Size    Description
  3880.  00h    WORD    base I/O register (FFFFh = end of list)
  3881.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  3882.         index value and the following register as a data byte
  3883.  2N+2    WORD    FFFFh (end of data list)
  3884.     ... (repeats until FFFFh base address)
  3885. --------V-107F06-----------------------------
  3886. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  3887.     AX = 7F06h
  3888.     BL = subfunction
  3889.         00h set multiple font state
  3890.         CX = new state (00h off, 01h on)
  3891.         01h get multiple font state
  3892.         Return: BL = current state (00h off, 01h on)
  3893. Return: AL != 7Fh if not supported
  3894.     AL = 7Fh if supported
  3895.         AH = status
  3896.         00h successful
  3897.         01h failed
  3898. SeeAlso: AH=11h
  3899. --------V-107F07-----------------------------
  3900. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  3901.     AX = 7F07h
  3902.     BL = how much to fill
  3903.        00h regen size
  3904.        01h all video memory
  3905.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  3906. Return: AL != 7Fh if not supported
  3907.     AL = 7Fh if supported
  3908.         AH = status
  3909.         00h successful
  3910.         01h failed
  3911. SeeAlso: AH=06h
  3912. --------Q-1080--DX4456-----------------------
  3913. INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
  3914.     AH = 80h
  3915.     DX = 4456h ('DV')
  3916.     ES:DI -> FAR subroutine to be called on ???
  3917. Return: DS = segment of DESQview data structure for video buffer
  3918. Note:    this function is probably meant for internal use only, due to the magic
  3919.       value required in DX
  3920.     the subroutine seems to be called when the DESQview menu is accessed;
  3921.       on entry, AL = 03h or 04h
  3922. --------Q-1081--DX4456-----------------------
  3923. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
  3924.     AH = 81h
  3925.     DX = 4456h ('DV')
  3926. Return: ES = segment of DESQview data structure for video buffer
  3927.         BYTE ES:[0] = current window number in DV 2.0x
  3928. Note:    this function is probably meant for internal use only, due to the magic
  3929.       value required in DX
  3930. SeeAlso: AH=82h
  3931. --------Q-1082--DX4456-----------------------
  3932. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
  3933.     AH = 82h
  3934.     DX = 4456h ('DV')
  3935. Return: DS = segment in DESQview for data structure
  3936.          in DV 2.00,
  3937.           BYTE DS:[0] = window number
  3938.           WORD DS:[1] = segment of other data structure
  3939.           WORD DS:[3] = segment of window's object handle
  3940.     ES = segment of DESQview data structure for video buffer
  3941.     AL = current window number
  3942.     AH = ???
  3943.     BL = direct screen writes
  3944.         00h program does not do direct writes
  3945.         01h program does direct writes, so shadow buffer not usable
  3946.     BH = ???
  3947.     CL = current video mode
  3948.     CH = ???
  3949. Note:    this function is probably meant for internal use only, due to the magic
  3950.       value required in DX
  3951. SeeAlso: AH=81h
  3952. --------J-108200-----------------------------
  3953. INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
  3954.     AX = 8200h
  3955.     BL = new scroll mode or FFh to get current mode
  3956.         00h dynamic, 01h software
  3957. Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
  3958. SeeAlso: AH=06h,AH=07h
  3959. --------J-108300-----------------------------
  3960. INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
  3961.     AX = 8300h
  3962. Return: AX = offset of video RAM
  3963.     ES:BX -> virtual text RAM buffer
  3964. SeeAlso: AX=5201h
  3965. --------N-108B-------------------------------
  3966. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  3967.     AH = 8Bh
  3968. SeeAlso: AH=92h,AH=93h
  3969. --------N-1090-------------------------------
  3970. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  3971.     AH = 90h
  3972. Return: AL = current video mode (see AH=00h)
  3973. SeeAlso: AH=91h
  3974. --------N-1091-------------------------------
  3975. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  3976.     AH = 91h
  3977. Return: AL = video adapter type (see below)
  3978. Note:    types less than 80h do not imply that the current user is on the host
  3979. SeeAlso: AH=90h
  3980.  
  3981. Values for video adapter type:
  3982.  00h monochrome
  3983.  01h Hercules monochrome graphics
  3984.  02h CGA
  3985.  03h EGA
  3986.  04h VGA
  3987.  80h monochrome text terminal
  3988.  81h Hercules graphics terminal
  3989.  82h color graphics terminal
  3990. --------N-1092-------------------------------
  3991. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  3992.     AH = 92h
  3993. Note:    the terminal will be updated even when screen updates are inhibited if
  3994.       TTY output is used
  3995. SeeAlso: AH=8Bh
  3996. --------N-1093-------------------------------
  3997. INT 10 - Alloy MW386 - REDRAW SCREEN
  3998.     AH = 93h
  3999. SeeAlso: AH=8Bh,AH=FFh
  4000. --------b-10BF00-----------------------------
  4001. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  4002.     AX = BF00h
  4003. Desc:    specify that the external monitor become the active monitor
  4004. Note:    all registers preserved and the internal monitor is blanked
  4005. SeeAlso: AX=BF01h
  4006. --------b-10BF01-----------------------------
  4007. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  4008.     AX = BF01h
  4009. Desc:    specify that the internal monitor become the active monitor
  4010. Note:    all registers preserved and the external monitor is blanked
  4011. SeeAlso: AX=BF00h
  4012. --------b-10BF02-----------------------------
  4013. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  4014.     AX = BF02h
  4015.     BH = master mode
  4016.         04h CGA
  4017.         05h EGA
  4018.         07h MDA
  4019. SeeAlso: AX=BF03h
  4020. --------b-10BF03BX0000-----------------------
  4021. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  4022.     AX = BF03h
  4023.     BX = 0000h
  4024. Return: BH = active monitor
  4025.         00h = external
  4026.         01h = internal
  4027.     BL = master mode
  4028.         00h = switchable VDU not present
  4029.         04h = CGA
  4030.         05h = EGA
  4031.         07h = MDA
  4032.         08h = switchable LCD controller present
  4033.     CH = 00h (reserved)
  4034.     CL = switchable VDU mode supported
  4035.         bit     0   = CGA supported
  4036.         bits 1,2 = reserved (1)
  4037.         bit     3   = MDA supported
  4038.         bits 4-7 = reserved (1)
  4039.     DH = internal monitor type (see below)
  4040.     DL = external monitor type (see below)
  4041. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  4042.  
  4043. Values for monitor type:
  4044.  00h    none
  4045.  01h    dual-mode monitor
  4046.  02h    5153 RGB monitor
  4047.  03h    Compaq Color monitor
  4048.  04h    640x400 flat panel
  4049.  05h    VGC monochrome
  4050.  06h    VGC color
  4051.  07h    LCD VGA
  4052. --------b-10BF04-----------------------------
  4053. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  4054.     AX = BF04h
  4055.     BH = new state of delay
  4056.         00h enabled
  4057.         01h disabled
  4058. SeeAlso: AX=BF05h
  4059. --------b-10BF05-----------------------------
  4060. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  4061.     AX = BF05h
  4062.     BH = new state of video
  4063.         00h off
  4064.         01h on
  4065. SeeAlso: AH=12h/BL=36h,AX=BF04h
  4066. --------b-10BF06-----------------------------
  4067. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  4068.     AX = BF06h
  4069.     CL = address to be read from gray scale table
  4070. Return: AL = bit 3-0 - Value read from gray scale table
  4071.     CL = address to be read from gray scale table
  4072. SeeAlso: AH=12h/BL=33h,AX=BF07h
  4073. --------b-10BF07-----------------------------
  4074. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  4075.     AX = BF07h
  4076.     CH = value to write to gray scale table
  4077.     CL = address to be written to gray scale table
  4078. SeeAlso: AX=BF06h,AX=BF08h
  4079. --------b-10BF08-----------------------------
  4080. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  4081.     AX = BF08h
  4082.     CH = bits 7-4 green weight
  4083.          bits 3-0 blue weight
  4084.     CL = bits 7-4 unused
  4085.          bits 3-0 red weight
  4086. SeeAlso: AH=12h/BH=33h,AX=BF07h
  4087. --------V-10CC00SI0000-----------------------
  4088. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  4089.     AX = CC00h
  4090.     SI = 0000h (if checking version)
  4091. Return: CX = ABCDh
  4092.     AL = Ultravision extensions
  4093.         00h enabled
  4094.         FFh disabled
  4095.     AH = card designator
  4096.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  4097.     DX = support for high resolution modes
  4098.         00h not active
  4099.         01h active
  4100.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  4101.        = unchanged for versions <1.2
  4102. SeeAlso: AX=CC01h,AX=CC02h
  4103. --------V-10CC01-----------------------------
  4104. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  4105.     AX = CC01h
  4106. Notes:    subsequent BIOS calls will be passed through to previous handler
  4107.     should be followed immediately by mode set to restore normal EGA/VGA
  4108.       state
  4109. SeeAlso: AX=CC02h
  4110. --------V-10CC02-----------------------------
  4111. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  4112.     AX = CC02h
  4113. Note:    should be followed immediately by mode set to restore previous
  4114.       UltraVision state
  4115. SeeAlso: AX=CC01h
  4116. --------V-10CD00-----------------------------
  4117. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  4118.     AX = CD00h
  4119.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  4120.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  4121. Notes:    if palette locking is in effect for the current mode, the new colors
  4122.       will be displayed immediately; otherwise, the system reverts to the
  4123.       default palette
  4124.     palette table 0 is reserved for the default palette and cannot be set
  4125.     UltraVision always sets the border color to black
  4126. SeeAlso: AX=CD01h,AX=CD02h
  4127. --------V-10CD01-----------------------------
  4128. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  4129.     AX = CD01h
  4130.     CL = palette locking value
  4131.         00h none
  4132.         01h text modes only (02h,03h)
  4133.         FFh all modes (all standard color text and graphics modes)
  4134. Notes:    intended for video modes with 16 or fewer colors
  4135. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  4136. --------V-10CD02-----------------------------
  4137. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  4138.     AX = CD02h
  4139. Return: CL = palette table number
  4140.     DS:DX -> 17-byte palette register list
  4141.     DS:SI -> current font names table (see below)
  4142. Note:    only the font names are valid on monochrome EGA systems
  4143. SeeAlso: AX=1009h,AX=CD00h
  4144.  
  4145. Format of palette register list:
  4146. Offset    Size    Description
  4147.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  4148.  10h    BYTE    border color
  4149.  
  4150. Format of current font names table (v2+):
  4151. Offset    Size    standard EGA    HiRes EGA    VGA
  4152.  00h  8 BYTEs    N/A        F19 font    F20 font
  4153.  08h  8 BYTEs    F14 font    F14 font    F14 font
  4154.  10h  8 BYTEs    N/A        F11 font    F10 font
  4155.  18h  8 BYTEs    F8 font        F8 font        F8 font
  4156.  
  4157. Format of current font names table (v1.x):
  4158. Offset    Size    HiRes EGA
  4159.  00h  8 BYTEs    F19/F14 font
  4160.  08h  8 BYTEs    F11/F8 font
  4161. --------V-10CD03-----------------------------
  4162. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  4163.     AX = CD03h
  4164. Return: CL = palette locking value
  4165.         00h none
  4166.         01h text modes only
  4167.         FFh all modes
  4168. SeeAlso: AX=CD01h
  4169. --------V-10CD04-----------------------------
  4170. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  4171.     AX = CD04h
  4172. Return: AL = mode number (see below)
  4173. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  4174.  
  4175. Values for video mode number:
  4176.  11h    80x25
  4177.  12h    80x43, 80x50
  4178.  13h    80x34, 80x36
  4179.  14h    80x60, 80x63
  4180.  19h    94x25
  4181.  1Ah    94x43, 94x50
  4182.  1Bh    94x36
  4183.  1Ch    94x63
  4184.  21h    108x25
  4185.  22h    108x43, 108x50
  4186.  23h    107x34, 108x36
  4187.  24h    108x60, 108x63
  4188.  31h    120x25
  4189.  32h    120x43, 120x50
  4190.  33h    132x25
  4191.  34h    132x44, 132x50
  4192.  39h    120x36
  4193.  3Ah    120x63
  4194.  3Bh    132x36
  4195.  3Ch    132x60
  4196. Index:    video modes
  4197. --------V-10CD05-----------------------------
  4198. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  4199.     AX = CD05h
  4200.     CL = type
  4201.         00h line cursor
  4202.         FFh box cursor
  4203. Note:    sets default cursor type for text-based programs
  4204. SeeAlso: AH=01h,AX=CD06h
  4205. --------V-10CD06-----------------------------
  4206. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  4207.     AX = CD06h
  4208. Return:    CL = type
  4209.         00h line cursor
  4210.         FFh box cursor
  4211. SeeAlso: AH=03h,AX=CD05h
  4212. --------V-10CD07-----------------------------
  4213. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  4214.     AX = CD07h
  4215.     CL = hardware underline status
  4216.         00h off (color systems only)
  4217.         01h underline below characters
  4218.         02h strike through characters
  4219.     BL = foreground color for normal text (FFh = current)
  4220.     BH = foreground color for bright text (FFh = current)
  4221. Return: CL = hardware underline status
  4222.     BL = current foreground color for normal text
  4223.     BH = current foreground color for bright text
  4224. Notes:    when underline or strikeout is enabled in color text modes, the
  4225.       specified colors will be assigned temporarily to colors 01h and 09h,
  4226.       allowing affected text to match non-underlined text.    The color
  4227.       remapping uses values from the current onscreen palette regardless
  4228.       of the palette locking status (see AX=CD01h)
  4229.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  4230.       strikeout without color remapping
  4231. SeeAlso: AX=CD08h
  4232. --------V-10CD08-----------------------------
  4233. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  4234.     AX = CD08h
  4235. Return: CL = hardware underline status (see AX=CD07h)
  4236.     BL = foreground color for normal text
  4237.     BH = foreground color for bright text
  4238. Note:    only CL is valid on monochrome EGA systems
  4239. SeeAlso: AX=CD07h
  4240. --------V-10CD10-----------------------------
  4241. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  4242.     AX = CD10h
  4243.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  4244.     CX = ABCDh load 9xN alternate font (v2+)
  4245.        else number of characters to load
  4246.         DX = character offset into font table
  4247.         DS:SI -> 8-byte ASCII font name
  4248.     ES:BP -> font definitions
  4249. Return: AX = FFFFh if invalid font parameters
  4250. Notes:    loads the designated characters into UltraVision's resident font area
  4251.     should be followed by a video mode set to reload character generator
  4252. SeeAlso: AX=1100h
  4253. --------V-10CD-------------------------------
  4254. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  4255.     AH = CDh
  4256.     AL = text mode number (see AX=CD04h)
  4257. Return: AX = CDCDh if invalid mode
  4258. SeeAlso: AX=CD04h
  4259. --------V-10EF-------------------------------
  4260. INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
  4261.     AH = EFh
  4262. Return: DL = video adapter type
  4263.         00h original Hercules
  4264.         01h Hercules Plus
  4265.         02h Hercules InColor???
  4266.     DH = memory mode byte
  4267.         01h "half" mode
  4268.         03h "full" mode
  4269. Program: MSHERC.COM is a support program for the Microsoft Quick languages which
  4270.       makes their graphics libraries compatible with a Hercules card by
  4271.       adding video modes 08h and 88h, and supporting text in the new
  4272.       graphics modes.
  4273. Notes:    while in mode 08h or 88h, INT 10 supports the Hercules card much like
  4274.       a CGA.
  4275.     MSHERC performs an installation check by setting DL=FFh and testing
  4276.       whether it has been changed on return
  4277. Index:    installation check;MSHERC
  4278. --------V-10F0-------------------------------
  4279. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  4280.     AH = F0h
  4281.     BL = register number
  4282.     BH = 00h
  4283.     DX = group index
  4284.         Pointer/data chips
  4285.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  4286.            08h Sequencer (5 registers) 3C4h
  4287.            10h Graphics Controller (9 registers) 3CEh
  4288.            18h Attribute Controller (20 registers) 3C0h
  4289.         Single registers
  4290.            20h Miscellaneous Output register 3C2h
  4291.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  4292.            30h Graphics 1 Position register 3CCh
  4293.            38h Graphics 2 Position register 3CAh
  4294. Return: BL = data
  4295. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4296.       compatibility box, and others
  4297. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  4298. --------V-10F1-------------------------------
  4299. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  4300.     AH = F1h
  4301.     DX = group index (see AH=F0h)
  4302.         if single register:
  4303.         BL = value to write
  4304.         otherwise
  4305.         BL = register number
  4306.         BH = value to write
  4307. Return: BL = data
  4308. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4309.       compatibility box, and others
  4310. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  4311. --------V-10F2-------------------------------
  4312. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  4313.     AH = F2h
  4314.     CH = starting register number
  4315.     CL = Number of registers (>1)
  4316.     DX = group index
  4317.          00h CRTC (3B4h mono modes, 3D4h color modes)
  4318.          08h Sequencer 3C4h
  4319.          10h Graphics Controller 3CEh
  4320.          18h Attribute Controller 3C0h
  4321.     ES:BX -> buffer, CL bytes
  4322. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4323.       compatibility box, and others
  4324. SeeAlso: AH=F0h,AH=F3h
  4325. --------V-10F3-------------------------------
  4326. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  4327.     AH = F3h
  4328.     CH = starting register
  4329.     CL = number of registers (>1)
  4330.     DX = group index (see AH=F2h)
  4331.     ES:BX -> buffer, CL bytes
  4332. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4333.       compatibility box, and others
  4334. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  4335. --------V-10F4-------------------------------
  4336. INT 10 - EGA Register Interface Library - READ REGISTER SET
  4337.     AH = F4h
  4338.     CX = number of registers to read (>1)
  4339.     ES:BX -> table of records (see below)
  4340. Return: register values in table filled in
  4341. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4342.       compatibility box, and others
  4343. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  4344.  
  4345. Format of entries in table of register records:
  4346. Offset    Size    Description
  4347.  00h    WORD    group index
  4348.         Pointer/data chips
  4349.            00h CRTC (3B4h mono modes, 3D4h color modes)
  4350.            08h Sequencer 3C4h
  4351.            10h Graphics Controller 3CEh
  4352.            18h Attribute Controller 3C0h
  4353.         Single registers
  4354.            20h Miscellaneous Output register 3C2h
  4355.            28h Feature Control register (3BAh mono modes, 3DAh color)
  4356.            30h Graphics 1 Position register 3CCh
  4357.            38h Graphics 2 Position register 3CAh
  4358.  02h    BYTE    register number (0 for single registers)
  4359.  03h    BYTE    register value
  4360. --------V-10F5-------------------------------
  4361. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  4362.     AH = F5h
  4363.     CX = number of registers to write (>1)
  4364.     ES:BX -> table of records (see AH=F4h)
  4365. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4366.       compatibility box, and others
  4367. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  4368. --------V-10F6------------------------------
  4369. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  4370.     AH = F6h
  4371. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  4372.       others
  4373. SeeAlso: AH=F7h
  4374. --------V-10F7------------------------------
  4375. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  4376.     AH = F7h
  4377.     DX = port number
  4378.        Pointer/data chips
  4379.           00h CRTC (3B4h mono modes, 3D4h color modes)
  4380.           08h Sequencer 3C4h
  4381.           10h Graphics Controller 3CEh
  4382.           18h Attribute Controller 3C0h
  4383.        Single registers
  4384.           20h Miscellaneous Output register 3C2h
  4385.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  4386.           30h Graphics 1 Position register 3CCh
  4387.           38h Graphics 2 Position register 3CAh
  4388.     ES:BX -> table of one-byte entries, one byte to be written to each
  4389.          register
  4390. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4391.       compatibility box, and others
  4392. SeeAlso: AH=F6h
  4393. --------V-10FA--BX0000----------------------
  4394. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  4395.     AH = FAh
  4396.     BX = 0000h
  4397. Return: BX = 0000h if mouse driver not present
  4398.     ES:BX -> EGA Register Interface version number, if present:
  4399.         byte 0 = major release number
  4400.         byte 1 = minor release number
  4401. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4402.       compatibility box, and others
  4403. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  4404. --------K-10FA------------------------------
  4405. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  4406.     AH = FAh
  4407. Return: AX = 00FAh if installed
  4408.         ES = segment of resident code
  4409. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  4410.       Steiner
  4411. --------V-10FE------------------------------
  4412. INT 10 - TopView - GET SHADOW BUFFER
  4413.     AH = FEh
  4414.     ES:DI -> assumed video buffer
  4415.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  4416.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  4417. Return: ES:DI -> actual video buffer for calling process
  4418. Desc:    Determine the address of the virtual screen to which the program
  4419.       should write instead of the actual video memory; this permits
  4420.       programs to be multitasked without interfering with each other's
  4421.       output, and allows memory managers to move the video memory to
  4422.       permit larger programs to be loaded.
  4423. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  4424.       returned unchanged; RSIS is the Relocated Screen Interface
  4425.       Specification
  4426.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  4427.       whether a particular page exists
  4428.     TopView requires a call to AH=FFh to notify it that the screen has
  4429.       changed; DESQview will check for changes itself until the first call
  4430.       to AH=FFh
  4431. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  4432. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  4433. --------V-10FF-------------------------------
  4434. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  4435.     AH = FFh
  4436.     CX = number of consecutive changed characters
  4437.     ES:DI -> first changed character in shadow buffer
  4438. Notes:    avoid CX=0000h
  4439.     DESQview will discontinue the automatic screen updating initiated by
  4440.       AH=FEh after this call
  4441.     not supported (ignored) by DESQview/X 1.0x
  4442. SeeAlso: AH=93h,AH=FEh
  4443. --------E-10FF-------------------------------
  4444. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  4445.     AH = FFh
  4446.     AL = video mode (see below)
  4447. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  4448.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  4449. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  4450.  
  4451. Values for video mode number:
  4452.  00h    80x25 text
  4453.  01h    default text
  4454.  02h    CXxDX text
  4455.  03h    biggest text
  4456.  04h    320x200 graphics
  4457.  05h    default graphics
  4458.  06h    CXxDX graphics
  4459.  07h    biggest non-interlaced graphics
  4460.  08h    biggest graphics
  4461. Index:    video modes
  4462. --------R-10FF00-----------------------------
  4463. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  4464.     AX = FF00h
  4465. Return: BL = 00h not connected
  4466.        = 01h connected
  4467. SeeAlso: AX=FF01h,AX=FF02h
  4468. --------R-10FF01-----------------------------
  4469. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  4470.     AX = FF01h
  4471. SeeAlso: AX=FF00h,AX=FF02h
  4472. --------R-10FF02-----------------------------
  4473. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  4474.     AX = FF02h
  4475. Return: ES:DI -> ASCIZ phone number
  4476. SeeAlso: AX=FF00h,AX=FF01h
  4477. --------C-11---------------------------------
  4478. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  4479. Desc:    automatically generated by the CPU when the AC flag is set, the current
  4480.       privilege level is 3, and a misaligned memory access (WORD not on an
  4481.       even address or DWORD not on a multiple of 4) is made
  4482. Note:    not all V86 monitors allow the AC flag to be set, such as Turbo
  4483.       Debugger 386
  4484. --------B-11---------------------------------
  4485. INT 11 - BIOS - GET EQUIPMENT LIST
  4486. Return: AX = BIOS equipment list word
  4487.         bits
  4488.         0      floppy disk(s) installed (see bits 6-7)
  4489.         1      80x87 coprocessor installed
  4490.         2,3      number of 16K banks of RAM on motherboard (PC only)
  4491.           number of 64K banks of RAM on motherboard (XT only)
  4492.         2      pointing device installed (PS)
  4493.         3      unused (PS)
  4494.         4-5      initial video mode
  4495.           00 EGA, VGA, or PGA
  4496.           01 40x25 color
  4497.           10 80x25 color
  4498.           11 80x25 monochrome
  4499.         6-7      number of floppies installed less 1 (if bit 0 set)
  4500.         8      DMA support installed (PCjr, some Tandy 1000s, 1400LT)
  4501.         9-11  number of serial ports installed
  4502.         12      game port installed
  4503.         13      serial printer attached (PCjr)
  4504.           internal modem installed (PC/Convertible)
  4505.         14-15 number of parallel ports installed
  4506. ---Compaq and many other 386/486 machines--
  4507.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  4508.             real mode
  4509.         bit 24: Weitek math coprocessor present
  4510. ---Compaq Systempro
  4511.     EAX bit 25: internal DMA parallel port available
  4512.         26: IRQ for internal DMA parallel port (if bit 25 set)
  4513.             0 = IRQ5
  4514.             1 = IRQ7
  4515.          27,28: parallel port DMA channel
  4516.             00 DMA channel 0
  4517.             01 DMA channel 0 ???
  4518.             10 reserved
  4519.             11 DMA channel 3
  4520. SeeAlso: INT 12
  4521. --------d-11----SI6A6A-----------------------
  4522. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  4523.     SI = 6A6Ah
  4524.     AH = command (see below)
  4525.     AL = SCSI Addressing
  4526.         bits 2-0 SCSI Target LUN (logical unit number)
  4527.         bits 5-3 SCSI Target ID
  4528.         bits 7-6 Host Adapter
  4529. Return: CF clear if successful
  4530.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  4531.         AH = ??? for command 01h
  4532.     CF set on error
  4533.         AL = error code
  4534. SeeAlso: INT 21/AX=4402"ASPI"
  4535.  
  4536. Values for SDLP command:
  4537.  00h SDLP initialization
  4538.  01h SDLP System Identify
  4539.  02h simple read sectors
  4540.  03h simple write sectors
  4541.  04h simple verify sectors/seek to sector
  4542.  05h get device size/type
  4543.  06h ready unit
  4544.  07h format unit
  4545.  08h diagnostics
  4546.  09h rewind
  4547.  0Ah erase
  4548.  0Bh write filemarks
  4549.  0Ch space
  4550.  0Dh prevent/allow media removal
  4551.  0Eh load/unload media
  4552.  0Fh reserved - returns good status
  4553.  10h set block size
  4554.  11h write setmark
  4555.  12h set error level
  4556.  13h get address of Request Sense Buffer
  4557.  14h get SDLP error via Request Sense
  4558.  F0h Vendor Unique Function (WD7000-FASST2 only)
  4559.  FDh reset current SCSI HAC
  4560.  FEh get/set current SCSI HAC
  4561.  FFh execute SCSI command
  4562. ----------1105D7-----------------------------
  4563. INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
  4564.     AX = 05D7h
  4565.     BX = product ID (0088h)
  4566. Note:    called by the BC++ IDE when an application calls
  4567.       INT 12/AX=05D7h/BX=05D7h
  4568. SeeAlso: INT 12/AX=05D7h/BX=05D7h
  4569. --------S-11BC--DX1954-----------------------
  4570. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  4571.     AH = BCh
  4572.     DX = 1954h
  4573. Return: AX = 1954h
  4574.     ES:DX -> entry point of driver (instead of INT 14)
  4575. SeeAlso: INT 14/AH=04h"FOSSIL"
  4576. --------d-11FF--SI6A6A-----------------------
  4577. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  4578.     AH = FFh
  4579.     SI = 6A6Ah
  4580.     AL = SCSI Addressing
  4581.         bits 2-0 SCSI Target LUN (logical unit number)
  4582.         bits 5-3 SCSI Target ID
  4583.         bit 7    write flag, set for write operations, clear otherwise
  4584.     CX = bytes of data to be transmitted (max FFF0h)
  4585.     DH = 00h
  4586.     DL = length of SCSI Command Descriptor Block
  4587.     DS:DI -> SCSI Command Descriptor Block
  4588.     ES:BX -> data buffer
  4589. Return: CF set on error
  4590.         AL = error code
  4591.     CF clear if successful
  4592. Note:    because of busmaster operations with WD7000FASST avoid accessing
  4593.       video memory directly; check 386 memory manager for VDS support.
  4594.       The WD7000XTAT works with programmed IO and does not have this
  4595.       limitation.
  4596. SeeAlso: INT 21/AX=4402"ASPI",INT 2F/AX=7F01h
  4597. --------T-11FFFECXFFFE-----------------------
  4598. INT 11 - BACK&FORTH (before v1.62) API
  4599.     AX = FFFEh
  4600.     CX = FFFEh
  4601.     BX = function
  4602.         00h installation check
  4603.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  4604.                = 0003h only BNFHIGH loaded
  4605.                else neither loaded
  4606.         01h ???
  4607.         Return: DX:AX -> ???
  4608.         02h ???
  4609.         03h ???
  4610.         04h ???
  4611.         05h ??? switches current PSP segment and stack if BNFLOW has not
  4612.             yet announced itself installed
  4613.         06h ???
  4614.         Return: AX = ???
  4615. SeeAlso: INT 12/AX=FFFEh
  4616. Index:    installation check;BACK&FORTH
  4617. --------B-12---------------------------------
  4618. INT 12 - BIOS - GET MEMORY SIZE
  4619. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4620. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  4621.       XT, this value is set from the switches on the motherboard
  4622. SeeAlso: INT 11,INT 2F/AX=4A06h
  4623. --------K-12----CX1806-----------------------
  4624. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  4625.     CX = 1806h
  4626. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4627.     CX = 1960h if installed
  4628. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  4629.       accented characters and box drawing on standard QWERTY keyboards; it
  4630.       also provides break-to-DOS and screen blanking capabilities
  4631. --------d-12----CX1807-----------------------
  4632. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  4633.     CX = 1807h
  4634. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4635.     CX = 1961h if installed
  4636. Program: PARKER is an optionally-resident hard disk parking program by Johan
  4637.       Zwiekhorst
  4638. ----------1205D7BX05D7-----------------------
  4639. INT 12 U - Borland C++ IDE - INSTALLATION CHECK
  4640.     AX = 05D7h (1495d)
  4641.     BX = 05D7h
  4642. Note:    the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
  4643. SeeAlso: INT 11/AX=05D7h/BX=0088h
  4644. --------T-12FFFECXFFFE-----------------------
  4645. INT 12 - Back&Forth v1.62+ - API
  4646.     AX = FFFEh
  4647.     CX = FFFEh
  4648.     BX = function
  4649.         00h installation check
  4650.         Return: AX = 0001h installed
  4651.                  else  not loaded
  4652.         02h build program ID list
  4653.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  4654.         Return: AX = number of programs defined
  4655.             ES:DI buffer filled with AX words
  4656.         03h switch to specified task (task need not be open yet)
  4657.         DX = two-letter program ID
  4658.         Return: AX = 0000h if task undefined
  4659.         04h ???
  4660.         05h    ???
  4661.         06h    get version (undoc)
  4662.         Return: AX = version * 100 (v1.71 = 00ABh)
  4663.         07h ???
  4664.         08h get open tasks (undoc)
  4665.         ES:DI -> task info buffer (see below)
  4666.         Return: AX = number of open tasks (max 20)
  4667.         09h    ???
  4668. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  4669. SeeAlso: INT 11/AX=FFFEh
  4670. Index:    installation check;BACK&FORTH
  4671.  
  4672. Format of task info buffer:
  4673. Offset    Size    Description
  4674.  00h 21 BYTEs    ASCIZ task name
  4675.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  4676.  16h    WORD    hotkey scan code
  4677.  18h    WORD    program ID
  4678. --------B-1300-------------------------------
  4679. INT 13 - DISK - RESET DISK SYSTEM
  4680.     AH = 00h
  4681.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  4682. Return: AH = status (see AH=01h)
  4683.     CF clear if successful (returned AH=00h)
  4684.     CF set on error
  4685. Note:    forces controller to recalibrate drive heads (seek to track 0)
  4686. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  4687. --------B-1301-------------------------------
  4688. INT 13 - DISK - GET STATUS OF LAST OPERATION
  4689.     AH = 01h
  4690.     DL = drive (bit 7 set for hard disk)
  4691. Return: CF clear if successful (returned status 00h)
  4692.     CF set on error
  4693.     AH = status of previous operation (see below)
  4694. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  4695.       status in both AH and AL
  4696.  
  4697. Values for status:
  4698.  00h successful completion
  4699.  01h invalid function in AH or invalid parameter
  4700.  02h address mark not found
  4701.  03h disk write-protected
  4702.  04h sector not found/read error
  4703.  05h reset failed (hard disk)
  4704.  06h disk changed (floppy)
  4705.  07h drive parameter activity failed (hard disk)
  4706.  08h DMA overrun
  4707.  09h attempted DMA across 64K boundary
  4708.  0Ah bad sector detected (hard disk)
  4709.  0Bh bad track detected (hard disk)
  4710.  0Ch unsupported track or invalid media
  4711.  0Dh invalid number of sectors on format (hard disk)
  4712.  0Eh control data address mark detected (hard disk)
  4713.  0Fh DMA arbitration level out of range (hard disk)
  4714.  10h uncorrectable CRC or ECC error on read
  4715.  11h data ECC corrected (hard disk)
  4716.  20h controller failure
  4717.  40h seek failed
  4718.  80h timeout (not ready)
  4719.  AAh drive not ready (hard disk)
  4720.  BBh undefined error (hard disk)
  4721.  CCh write fault (hard disk)
  4722.  E0h status register error (hard disk)
  4723.  FFh sense operation failed (hard disk)
  4724. --------B-1302-------------------------------
  4725. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  4726.     AH = 02h
  4727.     AL = number of sectors to read (must be nonzero)
  4728.     CH = low eight bits of cylinder number
  4729.     CL = sector number 1-63 (bits 0-5)
  4730.          high two bits of cylinder (bits 6-7, hard disk only)
  4731.     DH = head number
  4732.     DL = drive number (bit 7 set for hard disk)
  4733.     ES:BX -> data buffer
  4734. Return: CF set on error
  4735.         if AH = 11h (corrected ECC error), AL = burst length
  4736.     CF clear if successful
  4737.     AH = status (see AH=01h)
  4738.     AL = number of sectors transferred
  4739. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4740.       enough; the read should be retried at least three times, resetting
  4741.       the disk with AH=00h between attempts
  4742.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4743.       DH (head number) since the WD-1003 controller which is the standard
  4744.       AT controller (and the controller that IDE emulates) only supports
  4745.       16 heads
  4746.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4747.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4748. SeeAlso: AH=03h,AH=0Ah
  4749. --------B-1303-------------------------------
  4750. INT 13 - DISK - WRITE DISK SECTOR(S)
  4751.     AH = 03h
  4752.     AL = number of sectors to write (must be nonzero)
  4753.     CH = low eight bits of cylinder number
  4754.     CL = sector number 1-63 (bits 0-5)
  4755.          high two bits of cylinder (bits 6-7, hard disk only)
  4756.     DH = head number
  4757.     DL = drive number (bit 7 set for hard disk)
  4758.     ES:BX -> data buffer
  4759. Return: CF set on error
  4760.     CF clear if successful
  4761.     AH = status (see AH=01h)
  4762.     AL = number of sectors transferred
  4763. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4764.       enough; the write should be retried at least three times, resetting
  4765.       the disk with AH=00h between attempts
  4766.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4767.       DH (head number) since the WD-1003 controller which is the standard
  4768.       AT controller (and the controller that IDE emulates) only supports
  4769.       16 heads
  4770.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4771.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4772. SeeAlso: AH=02h,AH=0Bh
  4773. --------B-1304-------------------------------
  4774. INT 13 - DISK - VERIFY DISK SECTOR(S)
  4775.     AH = 04h
  4776.     AL = number of sectors to verify (must be nonzero)
  4777.     CH = low eight bits of cylinder number
  4778.     CL = sector number 1-63 (bits 0-5)
  4779.          high two bits of cylinder (bits 6-7, hard disk only)
  4780.     DH = head number
  4781.     DL = drive number (bit 7 set for hard disk)
  4782.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  4783. Return: CF set on error
  4784.     CF clear if successful
  4785.     AH = status (see AH=01h)
  4786.     AL = number of sectors verified
  4787. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4788.       enough; the write should be retried at least three times, resetting
  4789.       the disk with AH=00h between attempts
  4790.     this function does not compare the disk with memory, it merely
  4791.       checks whether the sector's stored CRC matches the data's actual CRC
  4792.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4793.       DH (head number) since the WD-1003 controller which is the standard
  4794.       AT controller (and the controller that IDE emulates) only supports
  4795.       16 heads
  4796.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4797.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4798. SeeAlso: AH=02h
  4799. --------B-1305-------------------------------
  4800. INT 13 - FLOPPY - FORMAT TRACK
  4801.     AH = 05h
  4802.     AL = number of sectors to format
  4803.     CH = track number
  4804.     DH = head number
  4805.     DL = drive number
  4806.     ES:BX -> address field buffer (see below)
  4807. Return: CF set on error
  4808.     CF clear if successful
  4809.     AH = status (see AH=01h)
  4810. Notes:    on AT or higher, call AH=17h first
  4811.     the number of sectors per track is read from the diskette parameter
  4812.       table pointed at by INT 1E
  4813. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  4814.  
  4815. Format of address field buffer entry (one per sector in track):
  4816. Offset    Size    Description
  4817.  00h    BYTE    track number
  4818.  01h    BYTE    head number (0-based)
  4819.  02h    BYTE    sector number
  4820.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  4821. --------B-1305-------------------------------
  4822. INT 13 - FIXED DISK - FORMAT TRACK
  4823.     AH = 05h
  4824.     AL = interleave value (XT-type controllers only)
  4825.     ES:BX -> 512-byte format buffer
  4826.         the first 2*(sectors/track) bytes contain F,N for each sector
  4827.            F = 00h for good sector, 80h for bad sector
  4828.            N = sector number
  4829.     CH = cylinder number (bits 8,9 in high bits of CL)
  4830.     CL = high bits of cylinder number (bits 7,6)
  4831.     DH = head
  4832.     DL = drive
  4833. Return: AH = status code (see AH=01h)
  4834. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4835.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4836.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  4837.       first
  4838.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4839.       DH (head number) since the WD-1003 controller which is the standard
  4840.       AT controller (and the controller that IDE emulates) only supports
  4841.       16 heads
  4842. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  4843. --------d-1305-------------------------------
  4844. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  4845.     AH = 05h
  4846.     DL = hard drive ID
  4847.     ES:BX -> mode select data (see below)
  4848. Return: CF set on error
  4849.     AH = status code (see AH=01h)
  4850. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to 
  4851.       format a SCSI disk with the desired parameters
  4852.     the mode select data below is from the SCSI-1 specification
  4853.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  4854.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  4855. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  4856.  
  4857. Format of mode select data:
  4858. Offset    Size    Description
  4859.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  4860.  01h    BYTE    reserved (0)
  4861.  02h    BYTE    medium type (0 for hard disk)
  4862.  03h    BYTE    reserved (0)
  4863.  04h    BYTE    block descriptor length (8)
  4864.  05h    BYTE    density code (0 for hard disk)
  4865.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  4866.  09h    BYTE    reserved (0)
  4867.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  4868.  0Dh    ???    vendor-specific parameter bytes (optional)
  4869. --------B-1306-------------------------------
  4870. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  4871.     AH = 06h
  4872.     AL = interleave value
  4873.     CH = cylinder number (bits 8,9 in high bits of CL)
  4874.     CL = sector number
  4875.     DH = head
  4876.     DL = drive
  4877. Return: AH = status code (see AH=01h)
  4878. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4879.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4880. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  4881. --------d-1306-------------------------------
  4882. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  4883.     AH = 06h
  4884.     AL = interleave
  4885.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  4886.     DL = hard drive ID
  4887.     DH = bits 7-5 drive LUN
  4888.          bit 4    defect list is available
  4889.          bit 3    defect list is complete (erase drive's defect list)
  4890.          bits 2-0 defect table format
  4891.               (000=use defect table A, 100=use defect table B,
  4892.               101=use defect table C)
  4893.     ES:BX ->  defect table A, B or C (see below)
  4894. Return: CF set on error
  4895.     AH = status code (see AH=01h)
  4896. Notes:    block addresses must be in ascending order (for table B, cylinder is
  4897.       most significant, byte from index least significant; for table C,
  4898.       cylinder is most significant, sector number least significant)
  4899.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  4900.       track shall be reassigned
  4901.     table C defect sector number of FFFFFFFFh indicates that the entire
  4902.       track shall be reassigned
  4903.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  4904.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  4905. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  4906.  
  4907. Format of defect table A:
  4908. Offset    Size    Description
  4909.  00h    WORD    number of bytes remaining in table
  4910.  02h    BYTE    reserved (0)
  4911.  03h    BYTE    reserved (0)
  4912.  04h    WORD    (big-endian) defect list length (4*number of defects)
  4913.  06h  4 DWORDs    (big-endian) defect block addresses
  4914.  
  4915. Format of defect table B:
  4916. Offset    Size    Description
  4917.  00h    WORD    number of bytes remaining in table
  4918.  02h    BYTE    reserved (0)
  4919.  03h    BYTE    reserved (0)
  4920.  04h    WORD    (big-endian) defect list length (8*number of defects)
  4921.  06h 8N BYTEs    defect list [array] (see below)
  4922.  
  4923. Format of defect table C:
  4924. Offset    Size    Description
  4925.  00h    WORD    number of bytes remaining in table
  4926.  02h    BYTE    reserved (0)
  4927.  03h    BYTE    reserved (0)
  4928.  04h    WORD    (big-endian) defect list length (8*number of defects)
  4929.  06h 8N BYTEs    defect list [array] (see below)
  4930.  
  4931. Format of defect list entry:
  4932. Offset    Size    Description
  4933.  00h  3 BYTEs    (big-endian) cylinder number of defect
  4934.  03h    BYTE    head number of defect
  4935.  04h    DWORD    (big-endian) defect bytes from index
  4936. --------d-1306-------------------------------
  4937. INT 13 - Adaptec AHA-154xA BIOS - IDENTIFY SCSI DEVICES
  4938.     AH = 06h
  4939. Return: AH = status code (see AH=01h)
  4940.     CF clear if successful
  4941.         AL = first drive supported
  4942.             (80h nonconcurrent operation, 81h concurrent operation)
  4943.     CF set on error
  4944. Desc:    determine the number of the first supported SCSI drive
  4945. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  4946.       only one SCSI drive is installed
  4947. SeeAlso: AH=08h
  4948. --------B-1307-------------------------------
  4949. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  4950.     AH = 07h
  4951.     AL = interleave value (XT only)
  4952.     ES:BX = 512-byte format buffer (see AH=05h)
  4953.     CH = cylinder number (bits 8,9 in high bits of CL)
  4954.     CL = sector number
  4955.     DH = head
  4956.     DL = drive
  4957. Return: AH = status code (see AH=01h)
  4958. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4959.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4960. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  4961. --------d-1307-------------------------------
  4962. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  4963.     AH = 07h
  4964.     AL = interleave (0 = default, 1 = consecutive sectors, 
  4965.            2 - 255 = vendor unique)
  4966.     DL = hard drive ID
  4967. Return: CF set on error
  4968.     AH = status code (see AH=01h)
  4969. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  4970. --------B-1308-------------------------------
  4971. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  4972.     AH = 08h
  4973.     DL = drive (bit 7 set for hard disk)
  4974. Return: CF set on error
  4975.         AH = status (07h) (see AH=01h)
  4976.     CF clear if successful
  4977.         AH = 00h
  4978.         BL = drive type (AT/PS2 floppies only) (see below)
  4979.         CH = low eight bits of maximum cylinder number
  4980.         CL = maximum sector number (bits 5-0)
  4981.          high two bits of maximum cylinder number (bits 7-6)
  4982.         DH = maximum head number
  4983.         DL = number of drives
  4984.         ES:DI -> drive parameter table (floppies only)
  4985. Notes:    may return successful even though specified drive is greater than the
  4986.       number of attached drives of that type (floppy/hard); check DL to
  4987.       ensure validity
  4988.     for systems predating the IBM AT, this call is only valid for hard
  4989.       disks, as it is implemented by the hard disk BIOS rather than the
  4990.       ROM BIOS
  4991.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  4992.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  4993. SeeAlso: AH=06h"Adaptec",AH=15h,INT 1E,INT 41
  4994.  
  4995. Values for drive type:
  4996.  01h 360K
  4997.  02h 1.2M
  4998.  03h 720K
  4999.  04h 1.44M
  5000.  05h ??? (reportedly an obscure drive type shipped on some IBM machines)
  5001.  06h 2.88M
  5002. --------B-1309-------------------------------
  5003. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  5004.     AH = 09h
  5005.     DL = drive (80h for first, 81h for second)
  5006. Return: CF clear if successful
  5007.     CF set on error
  5008.     AH = status (see AH=01h)
  5009. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  5010.       INT 41
  5011.     on the AT and later, this function uses the parameter table pointed at
  5012.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  5013.       DL=81h
  5014. SeeAlso: INT 41,INT 46
  5015. --------B-130A-------------------------------
  5016. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  5017.     AH = 0Ah
  5018.     AL = number of sectors
  5019.     CH = low eight bits of cylinder number
  5020.     CL = sector number (bits 5-0)
  5021.          high two bits of cylinder number (bits 7-6)
  5022.     DH = head number
  5023.     DL = drive number (80h = first, 81h = second)
  5024.     ES:BX -> data buffer
  5025. Return: CF clear if successful
  5026.     CF set on error
  5027.     AH = status (see AH=01h)
  5028.     AL = number of sectors transferred
  5029. Notes:    this function reads in four to seven bytes of error-correcting code
  5030.       along with each sector's worth of information
  5031.     data errors are not automatically corrected, and the read is aborted
  5032.       after the first sector with an ECC error
  5033.     used for diagnostics only on PS/2 systems
  5034. SeeAlso: AH=02h,AH=0Bh
  5035. --------B-130B-------------------------------
  5036. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  5037.     AH = 0Bh
  5038.     AL = number of sectors
  5039.     CH = low eight bits of cylinder number
  5040.     CL = sector number (bits 5-0)
  5041.          high two bits of cylinder number (bits 7-6)
  5042.     DH = head number
  5043.     DL = drive number (80h = first, 81h = second)
  5044.     ES:BX -> data buffer
  5045. Return: CF clear if successful
  5046.     CF set on error
  5047.     AH = status (see AH=01h)
  5048.     AL = number of sectors transferred
  5049. Notes:    each sector's worth of data must be followed by four to seven bytes of
  5050.       error-correction information
  5051.     used for diagnostics only on PS/2 systems
  5052. SeeAlso: AH=03h,AH=0Ah
  5053. --------B-130C-------------------------------
  5054. INT 13 - HARD DISK - SEEK TO CYLINDER
  5055.     AH = 0Ch
  5056.     CH = low eight bits of cylinder number
  5057.     CL = sector number (bits 5-0)
  5058.          high two bits of cylinder number (bits 7-6)
  5059.     DH = head number
  5060.     DL = drive number (80h = first, 81h = second hard disk)
  5061. Return: CF set on error
  5062.     CF clear if successful
  5063.     AH = status (see AH=01h)
  5064. SeeAlso: AH=00h,AH=02h,AH=0Ah
  5065. --------d-130D-------------------------------
  5066. INT 13 - HARD DISK - RESET HARD DISKS
  5067.     AH = 0Dh
  5068.     DL = drive number (80h = first, 81h = second hard disk)
  5069. Return: CF set on error
  5070.     CF clear if successful
  5071.     AH = status (see AH=01h)
  5072. Notes:    reinitializes the hard disk controller, resets the specified drive's
  5073.       parameters, and recalibrates the drive's heads (seek to track 0)
  5074.     not for PS/2 ESDI drives
  5075. SeeAlso: AH=00h,INT 21/AH=0Dh
  5076. --------B-130E-------------------------------
  5077. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  5078.     AH = 0Eh
  5079.     DL = drive number (80h = first, 81h = second hard disk)
  5080.     ES:BX -> buffer
  5081. Return: CF set on error
  5082.     CF clear if successful
  5083.     AH = status code (see AH=01h)
  5084. Notes:    transfers controller's sector buffer.  No data is read from the drive
  5085.     used for diagnostics only on PS/2 systems
  5086. SeeAlso: AH=0Ah
  5087. --------B-130F-------------------------------
  5088. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  5089.     AH = 0Fh
  5090.     DL = drive number (80h = first, 81h = second hard disk)
  5091.     ES:BX -> buffer
  5092. Return: CF set on error
  5093.     CF clear if successful
  5094.     AH = status code (see AH=01h)
  5095. Notes:    does not write data to the drive
  5096.     should be called before formatting to initialize an XT-type
  5097.       controller's sector buffer
  5098.     used for diagnostics only on PS/2 systems
  5099. SeeAlso: AH=0Bh
  5100. --------B-1310-------------------------------
  5101. INT 13 - HARD DISK - CHECK IF DRIVE READY
  5102.     AH = 10h
  5103.     DL = drive number (80h = first, 81h = second hard disk)
  5104. Return: CF set on error
  5105.     CF clear if successful
  5106.     AH = status (see AH=01h)
  5107. --------B-1311-------------------------------
  5108. INT 13 - HARD DISK - RECALIBRATE DRIVE
  5109.     AH = 11h
  5110.     DL = drive number (80h = first, 81h = second hard disk)
  5111. Return:    CF set on error
  5112.     CF clear if successful
  5113.     AH = status (see AH=01h)
  5114. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  5115. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  5116. --------B-1312-------------------------------
  5117. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  5118.     AH = 12h
  5119.     DL = drive number (80h = first, 81h = second hard disk)
  5120. Return: CF set on error
  5121.     CF clear if successful
  5122.     AH = status code (see AH=01h)
  5123. SeeAlso: AH=13h,AH=14h
  5124. --------d-1312-------------------------------
  5125. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  5126.     AH = 12h
  5127.     DL = hard drive ID
  5128. Return: CF set on error
  5129.     AH = status code (see AH=01h)
  5130. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  5131.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  5132.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  5133.       is displayed
  5134.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5135.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5136. --------B-1313-------------------------------
  5137. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  5138.     AH = 13h
  5139.     DL = drive number (80h = first, 81h = second hard disk)
  5140. Return: CF set on error
  5141.     CF clear if successful
  5142.     AH = status code (see AH=01h)
  5143. SeeAlso: AH=12h,AH=14h
  5144. --------B-1314-------------------------------
  5145. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  5146.     AH = 14h
  5147. Return: CF set on error
  5148.     CF clear if successful
  5149.     AH = status code (see AH=01h)
  5150. SeeAlso: AH=12h,AH=13h
  5151. --------B-1315-------------------------------
  5152. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  5153.     AH = 15h
  5154.     DL = drive number (bit 7 set for hard disk)
  5155. Return:    CF clear if successful
  5156.         AH = type code
  5157.         00h no such drive
  5158.         01h floppy without change-line support
  5159.         02h floppy with change-line support
  5160.         03h hard disk
  5161.             CX:DX = number of 512-byte sectors
  5162.     CF set on error
  5163.         AH = status (see AH=01h)
  5164. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  5165. --------B-1316-------------------------------
  5166. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  5167.     AH = 16h
  5168.     DL = drive number
  5169. Return: CF clear if change line inactive
  5170.         AH = 00h (disk not changed)
  5171.     CF set if change line active
  5172.         AH = status
  5173.         06h change line active or not supported
  5174.         80h drive not ready or not present
  5175. Note:    call AH=15h first to determine whether the drive supports a change
  5176.       line
  5177. SeeAlso: AH=15h
  5178. --------B-1317-------------------------------
  5179. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  5180.     AH = 17h
  5181.     AL = format type
  5182.         01h = 320/360K disk in 360K drive
  5183.         02h = 320/360K disk in 1.2M drive
  5184.         03h = 1.2M disk in 1.2M drive
  5185.         04h = 720K disk in 720K drive
  5186.     DL = drive number
  5187. Return: CF set on error
  5188.     CF clear if successful
  5189.     AH = status (see AH=01h)
  5190. Note:    this function does not handle 1.44M drives; use AH=18h instead
  5191. SeeAlso: AH=15h,AH=18h
  5192. --------d-131700-----------------------------
  5193. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  5194.     AX = 1700h
  5195.     CL = length of buffer
  5196.     DL = hard drive ID
  5197.     ES:BX -> buffer for info
  5198. Return: CF clear if successful
  5199.         CH = number o bytes returned in buffer???
  5200.     CF set on error
  5201.         AH = status code (see AH=01h)
  5202. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  5203.     information block bytes 5-n are vendor-specific in older SCSI devices
  5204.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5205.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5206. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  5207.  
  5208. Format of SCSI inquiry information block:
  5209. Offset    Size    Description
  5210.  00h    BYTE    device type
  5211.         bits 0-4: peripheral device type (see below)
  5212.         bits 5-7: peripheral qualifier (see below)
  5213.  01h    BYTE    device type modifier
  5214.         bits 0-6: device type modifier
  5215.         bit 7: removable medium
  5216.  02h    BYTE    SCSI version
  5217.         bits 0-2: ANSI-approved version
  5218.               000 device might or might not comply to ANSI standard
  5219.               001 device complies to ANSI SCSI-1
  5220.               010 device complies to ANSI SCSI-2
  5221.               other reserved
  5222.         bits 3-5: ECMA version
  5223.         bits 6,7: ISO version
  5224.  03h    BYTE    data format/capabilities
  5225.         bits 0-2: response data format
  5226.               000 information block is as specified in SCSI-1
  5227.               001 information block is as specified in CCS
  5228.               010 information block is as specified in SCSI-2
  5229.               other reserved
  5230.         bits 4,5: reserved
  5231.         bit 6: terminate I/O process supported
  5232.         bit 7: asynchronous event notification supported
  5233.  04h    BYTE    additional data length (total remaining bytes)
  5234.  05h  2 BYTEs    reserved
  5235.  07h    BYTE    device capabilities (see below)
  5236.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  5237.  10h  8 BYTEs    product identification (space-padded ASCII)
  5238.  20h  4 BYTEs    product revision level (space-padded ASCII)
  5239.  24h 20 BYTEs    vendor specific
  5240.  38h 40 BYTEs    reserved
  5241.  60h    var    vendor specific parameters
  5242.  
  5243. Values for peripheral device type:
  5244.  00h    direct-access device (e.g., magnetic disk)
  5245.  01h    sequential-access device (e.g., magnetic tape)
  5246.  02h    printer device
  5247.  03h    processor device
  5248.  04h    write-once device (e.g., some optical disks)
  5249.  05h    CD-ROM device
  5250.  06h    scanner device
  5251.  07h    optical memory device (e.g., some optical disks)
  5252.  08h    medium changer device (e.g., jukeboxes) 
  5253.  09h    communications device
  5254.  0Ah    (defined by ASC IT8)
  5255.  0Bh    (defined by ASC IT8)
  5256.  0Ch-1Eh reserved
  5257.  1Fh    unknown or no device type
  5258.  
  5259. Values for peripheral qualifier:
  5260.  000b    device is currently connected to this logical unit and available
  5261.  001b    target is capable of supporting the specified peripheral, but the
  5262.        physical device is not currently connected to this logical unit
  5263.  010b    reserved
  5264.  011b    target can't support a physical device on this logical unit
  5265.  1xxb    vendor specific
  5266.  
  5267. Bitfields for device capabilities:
  5268.  bit 0    device responds to RESET with a hard RESET
  5269.  bit 1    tagged command queuing supported
  5270.  bit 2    reserved
  5271.  bit 3    linked commands supported
  5272.  bit 4    synchronous data transfer supported
  5273.  bit 5    16-bit transfers supported
  5274.  bit 6    32-bit transfers supported
  5275.  bit 7    relative addressing supported
  5276. --------B-1318-------------------------------
  5277. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  5278.     AH = 18h
  5279.     DL = drive number
  5280.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  5281.     CL = sectors per track (bits 0-5)
  5282.          top 2 bits of highest cylinder number (bits 6,7)
  5283. Return: AH = status
  5284.         00h requested combination supported
  5285.         01h function not available
  5286.         0Ch not supported or drive type unknown
  5287.         80h there is no disk in the drive
  5288.     ES:DI -> 11-byte parameter table
  5289. SeeAlso: AH=05h,AH=07h,AH=17h
  5290. --------d-1318-------------------------------
  5291. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  5292.     AH = 18h
  5293.     DL = hard drive ID
  5294. Return: CF set on error
  5295.         AH = status code (see AH=01h)
  5296.     CF clear if successful
  5297.         AX = 4321h (magic number)
  5298.         CX = controller family code (see below)
  5299.         ---if family code=0200h
  5300.         DH = number of exclusively ROM-controlled SCSI devices
  5301.         DL = canonical SCSI device number for specified drive
  5302.         ---if family code != 0200h
  5303.         BH = number of exclusively ROM-controlled SCSI devices
  5304.         BL = canonical SCSI device number for specified drive
  5305. Notes:    also sets an internal flag (non-resettable) which prevents some
  5306.       controller messages from being displayed, allows writes to
  5307.       removable devices (use caution!), and enables the INT 13 interface
  5308.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  5309.       versions
  5310.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5311.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5312. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  5313.  
  5314. Values for controller family code:
  5315.  0200h    TMC-1680/? (ROM 3.0)
  5316.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  5317.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  5318.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  5319.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  5320. --------B-1319-------------------------------
  5321. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  5322.     AH = 19h
  5323.     DL = drive
  5324. Return: CF set on error
  5325.     AH = status (see AH=01h)
  5326. SeeAlso: AH=11h
  5327. --------d-1319-------------------------------
  5328. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  5329.     AH = 19h
  5330.     DL = hard drive ID
  5331. Return: CF set on error
  5332.         AH = status code (see AH=01h)
  5333.     CF clear if successful
  5334.         AH = disk type (03h = fixed disk)
  5335.         CX:DX = number of 512-byte sectors
  5336. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  5337.       adjusts the result for 512-byte sectors
  5338.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  5339.       sector" (nnn=256 or 512, the only sizes supported in the translation
  5340.       code)
  5341.     should probably be called when a removable device has its media changed
  5342.     returns the same values as AH=15h
  5343.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5344.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5345. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  5346. --------d-131A-------------------------------
  5347. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  5348.     AH = 1Ah
  5349.     AL = defect table count
  5350.     CL = format modifiers (see below)
  5351.     DL = drive
  5352.     ES:BX -> defect table
  5353. Return: CF set on error
  5354.     AH = status (see AH=01h)
  5355. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  5356.       cylinder is formatted
  5357. SeeAlso: AH=07h,INT 15/AH=0Fh
  5358.  
  5359. Bitfields for format modifiers:
  5360.  bit 4    generate periodic interrupt
  5361.  bit 3    perform surface analysis
  5362.  bit 2    update secondary defect map
  5363.  bit 1    ignore secondary defect map
  5364.  bit 0    ignore primary defect map
  5365. --------d-131A-------------------------------
  5366. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  5367.     AH = 1Ah
  5368.     CH = track (bits 8,9 in high bits of CL)
  5369.     CL = sector (01h to number of sectors/track for drive)
  5370.     DH = head
  5371.     DL = hard drive ID
  5372. Return: CF set on error
  5373.     AH = status code (see AH=01h)
  5374.     CX:DX = logical block number of last quickly-accessible block after
  5375.         given block
  5376. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  5377.       logical block address of the last block after which a substantial
  5378.       delay in data transfer will be encountered (usually the last block
  5379.       on the current cylinder).  No translation to 512 byte sectors is
  5380.       performed on the result if data is stored on the disk in other than
  5381.       512 byte sectors.
  5382.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5383.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5384. SeeAlso: AH=15h,AH=19h"SCSI"
  5385. --------d-131B-------------------------------
  5386. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  5387.     AH = 1Bh
  5388.     AL = number of record
  5389.     DL = drive
  5390.     ES:BX -> buffer for manufacturing header (defect list)
  5391. Return: CF set on error
  5392.         AH = status
  5393. Note:    manufacturing header format (Defect Map Record format) can be found
  5394.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  5395. --------d-131B-------------------------------
  5396. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  5397.     AH = 1Bh
  5398.     DL = hard drive ID
  5399. Return: CF set on error
  5400.         AH = status code (see AH=01h)
  5401.     CF clear if successful
  5402.         ES:BX -> SCSI disk information block
  5403. Notes:    also sets a non-resettable flag which prevents some controller messages
  5404.       from being displayed
  5405.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5406.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5407. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  5408.  
  5409. Format of SCSI disk information block:
  5410. Offset    Size    Description
  5411.  00h    BYTE    drive physical information (see below)
  5412.  01h    WORD    translated number of cylinders
  5413.  03h    BYTE    translated number of heads
  5414.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  5415.  05h    BYTE    drive address
  5416.         bits 0-2: logical unit number
  5417.         bits 3-5: device number
  5418.  06h    BYTE    01h at initialization
  5419.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  5420.  08h    BYTE    00h
  5421.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  5422.  0Ah    BYTE    00h
  5423.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  5424.  15h    DWORD    translated number of sectors on device
  5425.  
  5426. Bitfields for device physical information:
  5427.  bit 0    ???
  5428.  bit 1    device uses parity
  5429.  bit 2    256 bytes per sector instead of 512
  5430.  bit 3    don't have capacity yet???
  5431.  bit 4    disk is removable
  5432.  bit 5    logical unit number is not present
  5433. --------d-131C-------------------------------
  5434. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  5435.     AH = 1Ch
  5436.     DL = hard drive ID (any valid SCSI hard disk)
  5437. Return: CF set on error
  5438.         AH = status code (see AH=01h)
  5439.     CF clear if successful
  5440.         ES:BX -> first byte of free RAM on controller
  5441. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  5442.       to 1BFFh on-bard the controller for storing drive information and
  5443.       controller status; ES:BX points to the first byte available for other
  5444.       uses
  5445.     ES contains the segment at which the controller resides; the
  5446.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  5447. SeeAlso: AH=1Bh"SCSI"
  5448. --------d-131C0A-----------------------------
  5449. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  5450.     AX = 1C0Ah
  5451.     DL = drive
  5452.     ES:BX -> buffer for device configuration (drive physical parameter)
  5453. Return: CF set on error
  5454.         AH = status
  5455. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  5456.       Adapter/A Technical Reference
  5457. --------d-131C0B-----------------------------
  5458. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  5459.     AX = 1C0Bh
  5460.     ES:BX -> buffer for adapter configuration
  5461. Return: CF set on error
  5462.         AH = status
  5463. SeeAlso: AX=1C0Ch
  5464. --------d-131C0C-----------------------------
  5465. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  5466.     AX = 1C0Ch
  5467.     ES:BX -> POS information
  5468. Return: CF set on error
  5469.         AH = status
  5470. SeeAlso: AX=1C0Bh
  5471. --------d-131C0E-----------------------------
  5472. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  5473.     AX = 1C0Eh
  5474.     CH = low 8 bits of cylinder number
  5475.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  5476.     DH = head number
  5477.     DL = drive number
  5478.     ES:BX -> ABA number
  5479. Return: CF set on error
  5480.         AH = status
  5481. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  5482.       Technical Reference by using its Device Configuration Status Block
  5483. --------c-131D-------------------------------
  5484. INT 13 - IBMCACHE.SYS - CACHE STATUS
  5485.     AH = 1Dh
  5486.     AL = subfunction
  5487.         01h get status record
  5488.         DL = drive???
  5489.         Return: ES:BX -> status record
  5490.             CF set on error
  5491.                 AH = error code
  5492.         02h set cache status
  5493.         ES:BX -> status record
  5494.         DL = drive???
  5495.         Return: CF set on error
  5496.  
  5497. Format of status record:
  5498. Offset    Size    Description
  5499.  00h    DWORD    total number of read requests
  5500.  04h    DWORD    total number of hits
  5501.  08h    DWORD    number of physical disk reads
  5502.  0Ch    DWORD    total number of sectors requested by physical disk reads
  5503.  10h  6 bytes    ???
  5504.  16h    DWORD    pointer to start of error list
  5505.  1Ah    DWORD    pointer to end of error list
  5506.  1Eh    WORD    ???
  5507.  20h    BYTE    using extended memory if nonzero
  5508.  21h    BYTE    ???
  5509.  22h  4 BYTEs    ASCII version number
  5510.  26h    WORD    cache size in K
  5511.  28h    WORD    sectors per page
  5512.  
  5513. Format of error list:
  5514. Offset    Size    Description
  5515.  00h    DWORD    relative block address of bad page
  5516.  04h    BYTE    drive
  5517.  05h    BYTE    sector bit-map
  5518.  06h    WORD    next error
  5519. --------d-1320-------------------------------
  5520. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  5521.     AH = 20h
  5522.     ???
  5523. Return: ???
  5524. Note:    returns some kind of status related to whether the drive contains its
  5525.       default media type
  5526. --------c-1320FF-----------------------------
  5527. INT 13 - QCACHE - DISMOUNT
  5528.     AX = 20FFh
  5529. Return: ???
  5530. --------c-1321-------------------------------
  5531. INT 13 - QCACHE - FLUSH CACHE
  5532.     AH = 21h
  5533. Return: ???
  5534. SeeAlso: AH=25h,AH=2Eh
  5535. --------c-1322-------------------------------
  5536. INT 13 - QCACHE - ENABLE/DISABLE CACHE
  5537.     AH = 22h
  5538.     AL = 00h disable cache
  5539.          01h enable cache
  5540. --------c-1324-------------------------------
  5541. INT 13 - QCACHE - SET SECTORS
  5542.     AH = 24h
  5543.     BX = number of sectors
  5544. Return: ???
  5545. --------c-1325-------------------------------
  5546. INT 13 - QCACHE - SET FLUSH INTERVAL
  5547.     AH = 25h
  5548.     BC = interval
  5549. Return: ???
  5550. SeeAlso: AH=21h,AH=2Eh
  5551. --------c-1327--BX0000-----------------------
  5552. INT 13 - QCACHE - INSTALLATION CHECK
  5553.     AH = 27h
  5554.     BX = 0000h
  5555. Return: BX nonzero if installed
  5556. --------c-132A-------------------------------
  5557. INT 13 - QCACHE - SET BUFFER SIZE
  5558.     AH = 2Ah
  5559.     AL = buffer size
  5560. Return: ???
  5561. --------c-132C-------------------------------
  5562. INT 13 - QCACHE - SET BUFFERED WRITES
  5563.     AH = 2Ch
  5564.     AL = state
  5565.         00h disable
  5566.         01h enable
  5567. Return: ???
  5568. SeeAlso: AH=2Dh
  5569. --------c-132D-------------------------------
  5570. INT 13 - QCACHE - SET BUFFERED READ
  5571.     AH = 2Dh
  5572.     AL = state
  5573.         00h disable
  5574.         01h enable
  5575. Return: ???
  5576. SeeAlso: AH=2Ch
  5577. --------c-132E-------------------------------
  5578. INT 13 - QCACHE - SET FLUSH COUNT
  5579.     AH = 2Eh
  5580.     BX = flush count
  5581. Return: ???
  5582. SeeAlso: AH=21h,AH=25h
  5583. --------c-1330-------------------------------
  5584. INT 13 - QCACHE - GET INFO
  5585.     AH = 30h
  5586.     AL = what to get
  5587.         00h system info
  5588.         01h drive info
  5589.     DS:DX -> buffer for info
  5590. Return: ???
  5591. --------d-135504-----------------------------
  5592. INT 13 - Seagate - GET CONTROLLER TYPE???
  5593.     AX = 5504h
  5594.     DX = drive (bit 7 set for hard disk)
  5595. Return: CF clear if successful
  5596.         AX = 4321h,4322h if Seagate controller
  5597.     CF set on error
  5598. SeeAlso: AX=5505h,AX=5514h
  5599. --------d-135505-----------------------------
  5600. INT 13 - Seagate - PARK HEADS???
  5601.     AX = 5505h
  5602.     DX = drive (bit 7 set for hard disk)
  5603. Return: CF clear if successful
  5604.     CF set on error
  5605. SeeAlso: AX=5504h,AX=5515h
  5606. --------d-135514-----------------------------
  5607. INT 13 - Seagate - ???
  5608.     AX = 5514h
  5609.     DX = drive (bit 7 set for hard disk)
  5610. Return: CF clear if successful
  5611.     CF set on error
  5612.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  5613. SeeAlso: AX=5504h,AX=5515h
  5614. --------d-135515-----------------------------
  5615. INT 13 - Seagate - PARK HEADS???
  5616.     AX = 5515h
  5617.     DX = drive (bit 7 set for hard disk)
  5618. Return: CF clear if successful
  5619.     CF set on error
  5620. Note:    appears to be identical to AX=5505h
  5621. SeeAlso: AX=5504h,AX=5505h
  5622. --------d-1370-------------------------------
  5623. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  5624.     AH = 70h
  5625.     ???
  5626. Return: ???
  5627. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  5628.       formatting program) make this call, presumably to EDVR.SYS (the
  5629.       partitioning driver)
  5630. SeeAlso: AH=ADh
  5631. ----------1375-------------------------------
  5632. INT 13 - ???
  5633.     AH = 75h
  5634.     ???
  5635. Return: AH = ???
  5636.     ???
  5637. Note:    intercepted by PC-Cache (v5.1 only)
  5638. ----------1376-------------------------------
  5639. INT 13 - ???
  5640.     AH = 76h
  5641.     ???
  5642. Return: AH = ???
  5643.     ???
  5644. Note:    intercepted by PC-Cache (v5.1 only)
  5645. --------c-137B00-----------------------------
  5646. INT 13 - NOW! v3.05 - GET INFORMATION
  5647.     AX = 7B00h
  5648.     CX:DX -> 1F8h-byte buffer for information record (see below)
  5649. Return: AX = 0000h
  5650.     BX = segment of main resident code
  5651.     ES = ???
  5652. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  5653. SeeAlso: AX=7B02h,AH=EFh
  5654.  
  5655. Format of information record:
  5656. Offset    Size    Description
  5657.  00h 80 BYTEs    name of directory from which NOW! was started
  5658.  50h 424 BYTEs    ???
  5659.  81h  ? BYTEs    array of bytes for ???
  5660.  F7h 250 BYTEs    array of 25 entries, one per drive???
  5661.     Offset    Size    Description
  5662.      00h  2 BYTEs    ???
  5663.      02h    WORD    ???
  5664.      04h    WORD    ???
  5665.      06h  4 BYTEs    ???
  5666. 1F1h  7 BYTEs    ???
  5667. --------c-137B01-----------------------------
  5668. INT 13 - NOW! v3.05 - ???
  5669.     AX = 7B01h
  5670. Return: DX = segment of ???
  5671. SeeAlso: AX=7B00h
  5672. --------c-137B02-----------------------------
  5673. INT 13 - NOW! v3.05 - SET INFORMATION
  5674.     AX = 7B02h
  5675.     BX = segment of ??? (10h above a PSP)
  5676.     CX:DX -> 1F8h-byte information record (see AX=7B00h)
  5677. Return: ???
  5678. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  5679. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  5680.       BX
  5681. SeeAlso: AX=7B00h
  5682. --------c-137B03-----------------------------
  5683. INT 13 - NOW! v3.05 - ???
  5684.     AX = 7B03h
  5685.     ???
  5686. Return: ???
  5687. SeeAlso: AX=7B00h,AX=7B04h
  5688. --------c-137B04-----------------------------
  5689. INT 13 - NOW! v3.05 - ???
  5690.     AX = 7B04h
  5691.     ???
  5692. Return: ???
  5693. SeeAlso: AX=7B03h
  5694. --------c-137B05-----------------------------
  5695. INT 13 - NOW! v3.05 - GET ???
  5696.     AX = 7B05h
  5697.     BX:AX = number of physical accesses???
  5698.     DX:CX = total disk accesses???
  5699. SeeAlso: AX=7B00h,AX=7B06h
  5700. --------c-137B06-----------------------------
  5701. INT 13 - NOW! v3.05 - GET ???
  5702.     AX = 7B06h
  5703.     BX = ???
  5704. Return: AX = 0000h
  5705.     BX = ???
  5706. SeeAlso: AX=7B05h,AX=7B07h
  5707. --------c-137B07-----------------------------
  5708. INT 13 - NOW! v3.05 - GET ???
  5709.     AX = 7B07h
  5710. Return: AX = ???
  5711.     BX = ???
  5712.     CX = ???
  5713.     DX = ???
  5714. SeeAlso: AX=7B06h
  5715. --------c-137B08-----------------------------
  5716. INT 13 - NOW! v3.05 - ???
  5717.     AX = 7B08h
  5718.     CX = ??? (default 00h)
  5719. Return: ???
  5720. SeeAlso: AX=7B00h
  5721. --------c-1380--CX6572-----------------------
  5722. INT 13 - FAST! - API
  5723.     AH = 80h
  5724.     CX = 6572h
  5725.     DX = 1970h
  5726.     ES:BX -> data structure (see below)
  5727.     AL = function
  5728.         01h ???
  5729.         04h ???
  5730.         05h ???
  5731.         06h installation check
  5732.         Return: AX = 1965h if installed
  5733.         07h ???
  5734.         09h ???
  5735.         0Ah ???
  5736.         0Bh ???
  5737.         0Ch set ??? flag
  5738.         0Dh clear ??? flag
  5739. Return: AH = 00h if successful (except function 06h)
  5740. Index:    installation check;FAST!
  5741.  
  5742. Format of data structure:
  5743. Offset    Size    Description
  5744.  00h    DWORD    pointer to 19-byte signature string 
  5745.         13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h
  5746.           04h 08h 15h  (v4.04)
  5747.  04h    ???    ???
  5748. --------c-1381--SI4358-----------------------
  5749. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5750.     AH = 81h
  5751.     SI = 4358h
  5752.     ???
  5753. Return: ???
  5754. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5755.       Super PC Kwik, and thus support this call
  5756.     returns immediately in PC-Cache v5.x
  5757. --------c-1382--SI4358-----------------------
  5758. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5759.     AH = 82h
  5760.     SI = 4358h
  5761.     ???
  5762. Return: AL = ???
  5763. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5764.       Super PC Kwik, and thus support this call
  5765. SeeAlso: AH=84h
  5766. --------c-1383--SI4358-----------------------
  5767. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5768.     AH = 83h
  5769.     SI = 4358h
  5770.     AL = ???
  5771.     ES:BX -> ???
  5772.     ???
  5773. Return: ???
  5774. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5775.       Super PC Kwik, and thus support this call
  5776. SeeAlso: AH=85h
  5777. --------c-1384--SI4358-----------------------
  5778. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5779.     AH = 84h
  5780.     SI = 4358h
  5781.     AL = ???
  5782.     ???
  5783. Return: AL = ???
  5784. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5785.       Super PC Kwik, and thus support this call
  5786. SeeAlso: AH=82h
  5787. --------c-1385--SI4358-----------------------
  5788. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5789.     AH = 85h
  5790.     SI = 4358h
  5791.     AL = ???
  5792.     DL = ???
  5793.     ???
  5794. Return: ???
  5795. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5796.       Super PC Kwik, and thus support this call
  5797. SeeAlso: AH=83h
  5798. --------c-1386--SI4358-----------------------
  5799. INT 13 - Qualitas Qcache v4.00 - ???
  5800.     AH = 86h
  5801.     SI = 4358h
  5802.     ???
  5803. Return: ???
  5804. --------c-1387--SI4358-----------------------
  5805. INT 13 - Qualitas Qcache v4.00 - ???
  5806.     AH = 87h
  5807.     SI = 4358h
  5808.     ???
  5809. Return: ???
  5810. --------c-1388--SI4358-----------------------
  5811. INT 13 - Qualitas Qcache v4.00 - ???
  5812.     AH = 88h
  5813.     SI = 4358h
  5814.     ???
  5815. Return: ???
  5816. --------c-138EED-----------------------------
  5817. INT 13 - HyperDisk v4.01+ - ???
  5818.     AX = 8EEDh
  5819.     ???
  5820. Return: ???
  5821. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5822. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  5823. --------c-138EEE-----------------------------
  5824. INT 13 - HyperDisk v4.01+ - ???
  5825.     AX = 8EEEh
  5826. Return: CF set
  5827.     AX = CS of HyperDisk resident code
  5828.     ???
  5829. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  5830. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  5831. --------c-138EEF-----------------------------
  5832. INT 13 - HyperDisk v4.01+ - ???
  5833.     AX = 8EEFh
  5834. Return: CF set
  5835.     AX = CS of HyperDisk resident code
  5836.     ???
  5837. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  5838. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  5839. --------c-13A0--SI4358-----------------------
  5840. INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
  5841.     AH = A0h
  5842.     SI = 4358h
  5843. Return: AX = segment of resident code
  5844. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5845.       Super PC Kwik, and thus support this call
  5846. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  5847. --------c-13A1--SI4358-----------------------
  5848. INT 13 - Super PC Kwik - FLUSH CACHE
  5849.     AH = A1h
  5850.     SI = 4358h
  5851. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5852.       Super PC Kwik, and thus support this call
  5853. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  5854. --------c-13A2--SI4358-----------------------
  5855. INT 13 - Super PC Kwik - ???
  5856.     AH = A2h
  5857.     SI = 4358h
  5858.     ???
  5859. Return: ???
  5860. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5861.       Super PC Kwik, and thus support this call
  5862. --------c-13A5-------------------------------
  5863. INT 13 C - Super PC Kwik - ???
  5864.     AH = A5h
  5865.     SI = ???
  5866. Return: AX = ???
  5867.     SI = ???
  5868. Notes:    called when a program terminates but stays resident (see INT 21/AH=31h)
  5869.     this call is not supported by Qualitas Qcache 4.00
  5870. --------c-13AA--SI4358-----------------------
  5871. INT 13 - Qualitas Qcache v4.00 - ???
  5872.     AH = AAh
  5873.     SI = 4358h
  5874.     ???
  5875. Return: ???
  5876. --------c-13AB--SI4358-----------------------
  5877. INT 13 - Qualitas Qcache v4.00 - ???
  5878.     AH = ABh
  5879.     SI = 4358h
  5880.     ???
  5881. Return: ???
  5882. --------c-13AC--SI4358-----------------------
  5883. INT 13 - Qualitas Qcache v4.00 - ???
  5884.     AH = ACh
  5885.     SI = 4358h
  5886.     ???
  5887. Return: ???
  5888. --------d-13AD-------------------------------
  5889. INT 13 - Priam HARD DISK CONTROLLER???
  5890.     AH = ADh
  5891.     ???
  5892. Return: ???
  5893. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  5894.       to check the ROM type on the controller for their hard disk kits
  5895. SeeAlso: AH=70h
  5896. --------c-13AD--SI4358-----------------------
  5897. INT 13 - Qualitas Qcache v4.00 - ???
  5898.     AH = ADh
  5899.     SI = 4358h
  5900.     ???
  5901. Return: ???
  5902. --------c-13B0--SI4358-----------------------
  5903. INT 13 - Super PC Kwik - ???
  5904.     AH = B0h
  5905.     SI = 4358h
  5906.     ???
  5907. Return: ???
  5908. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  5909.       supports this call; Qualitas Qcache does not support it
  5910. --------d-13EE-------------------------------
  5911. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  5912.     AH = EEh
  5913.     DL = drive number (80h, 81h)
  5914. Return: CF clear
  5915.        AH = 00h
  5916. Program: SWBIOS is a TSR by Ontrack Computer Systems
  5917. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  5918.       less than the desired cylinder
  5919.     flag cleared by all INT 13 calls except AH=EEh
  5920.     Disk Manager also supports these calls
  5921.     also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow
  5922.       caching of drives using SWBIOS to access more than 1024 cylinders
  5923. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  5924. --------c-13EF-------------------------------
  5925. INT 13 - NOW! - ???
  5926.     AH = EFh
  5927.     CX = ???
  5928.     DL = ???
  5929.     ???
  5930. Return: ???
  5931. SeeAlso: AX=7B00h
  5932. --------d-13F9-------------------------------
  5933. INT 13 - SWBIOS - INSTALLATION CHECK
  5934.     AH = F9h
  5935.     DL = drive number (80h,81h)
  5936. Return: CF clear 
  5937.         DX = configuration word
  5938.         bit 15 set if other SWBIOS extensions available
  5939.     CF set on error
  5940. Program: SWBIOS is a TSR by Ontrack Computer Systems
  5941. Note:    Disk Manager also supports these calls
  5942. SeeAlso: AH=EEh
  5943. --------v-13FA--DX5945-----------------------
  5944. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  5945.     AH = FAh
  5946.     DX = 5945h
  5947.     AL = function (00h-07h)
  5948. Return: varies by function
  5949. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  5950.       so it is listed in its entirety under INT 16/AX=FA00h and following
  5951. SeeAlso: INT 16/AX=FA00h
  5952. --------d-13FE-------------------------------
  5953. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  5954.     AH = FEh
  5955.     DL = drive number (80h, 81h)
  5956. Return: CF clear
  5957.     DX = number of cylinders beyond 1024 on drive
  5958. Program: SWBIOS is a TSR by Ontrack Computer Systems
  5959. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  5960.     BIOS without this extension would return count modulo 1024
  5961.     Disk Manager also supports these calls
  5962. SeeAlso: AH=EEh
  5963. --------S-14---------------------------------
  5964. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  5965. Note:    the installation check for this driver is to determine whether the
  5966.       "~DOSXAM~" character device exists
  5967. Index:    installation check;Digiboard DigiCHANNEL
  5968. --------S-1400-------------------------------
  5969. INT 14 - SERIAL - INITIALIZE PORT
  5970.     AH = 00h
  5971.     AL = port parameters
  5972.         bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
  5973.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  5974.         bit 2    stop bits (set = 2, clear = 1)
  5975.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  5976.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5977. Return: AH = line status (see AH=03h)
  5978.         FFh if error on Digiboard XAPCM232.SYS
  5979.     AL = modem status (see AH=03h)
  5980. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  5981.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  5982.       bps will result in 4800 bps
  5983.     various network and serial-port drivers support the standard BIOS
  5984.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5985. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AX=8000h"ARTICOM"
  5986. SeeAlso: AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  5987. --------S-1400-------------------------------
  5988. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  5989.     AH = 00h
  5990.     AL = initializing parameters
  5991.         7 - 6 - 5       4 - 3     2      1 - 0
  5992.         -BAUD RATE-       PARITY   STOP   WORD
  5993.                     BITS  LENGTH
  5994.         000 19200 bd   00 none  0: 1  00: 5
  5995.         001 38400 bd   01 odd   1: 2  01: 6
  5996.         010      300 bd   11 even      10: 7
  5997.         011      600 bd          11: 8
  5998.         100     1200 bd
  5999.         101     2400 bd
  6000.         110     4800 bd
  6001.         111     9600 bd (4800 on PCjr)
  6002.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  6003. Return: AH = RS-232 status code bits
  6004.         bit 0: RDA - input data is available in buffer
  6005.         bit 1: OVRN - data has been lost
  6006.         bit 5: THRE - room is available in output buffer
  6007.         bit 6: TSRE - output buffer empty
  6008.     AL = modem status bits
  6009.         bit 3: always 1
  6010.         bit 7: DCD - carrier detect
  6011. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  6012. --------S-1400-------------------------------
  6013. INT 14 - MBBIOS - INITIALIZE PORT
  6014.     AH = 00h
  6015.     AL = port parameters
  6016.         bits 7-5 data rate
  6017.             (normally 110,150,300,600,1200,2400,4800,9600 bps;
  6018.             9600,14400,19200,28800,38400,57600,115200,330400 bps
  6019.             if the high-speed option is set)
  6020.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  6021.         bit 2    stop bits (set = 2, clear = 1)
  6022.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  6023.     DX = port number
  6024. Return: AH = line status (see AH=03h)
  6025.     AL = modem status (see AH=03h)
  6026. Note:    MBBIOS was written by H. Roy Engehausen
  6027. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS"
  6028. --------S-1401-------------------------------
  6029. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  6030.     AH = 01h
  6031.     AL = character to write
  6032.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  6033. Return: AH bit 7 clear if successful
  6034.     AH bit 7 set on error
  6035.     AH bits 6-0 = port status (see AH=03h)
  6036. Note:    various network and serial-port drivers support the standard BIOS
  6037.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  6038. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  6039. --------S-1402-------------------------------
  6040. INT 14 - SERIAL - READ CHARACTER FROM PORT
  6041.     AH = 02h
  6042.     AL = 00h (ArtiCom)
  6043.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  6044. Return: AH = line status (see AH=03h)
  6045.     AL = received character if AH bit 7 clear
  6046. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  6047.       data ready
  6048.     various network and serial-port drivers support the standard BIOS
  6049.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  6050. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  6051. --------S-1402-------------------------------
  6052. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  6053.     AH = 02h
  6054.     DX = port number (0-3)
  6055. Return: AL = character received
  6056.     AH = 00h
  6057. SeeAlso: AH=01h,AH=02h"SERIAL"
  6058. --------S-1403-------------------------------
  6059. INT 14 - SERIAL - GET PORT STATUS
  6060.     AH = 03h
  6061.     AL = 00h (ArtiCom)
  6062.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  6063. Return: AH = line status (see below)
  6064.     AL = modem status (see below)
  6065.     AX = 9E00h if disconnected (ArtiCom)
  6066. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  6067.  
  6068. Bitfields for line status:
  6069.  bit 7    timeout
  6070.  bit 6    transmit shift register empty
  6071.  bit 5    transmit holding register empty
  6072.  bit 4    break detected
  6073.  bit 3    framing error
  6074.  bit 2    parity error
  6075.  bit 1    overrun error
  6076.  bit 0    receive data ready
  6077.  
  6078. Bitfields for modem status:
  6079.  bit 7    carrier detect
  6080.  bit 6    ring indicator
  6081.  bit 5    data set ready
  6082.  bit 4    clear to send
  6083.  bit 3    delta carrier detect
  6084.  bit 2    trailing edge of ring indicator
  6085.  bit 1    delta data set ready
  6086.  bit 0    delta clear to send
  6087. --------S-1404-------------------------------
  6088. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  6089.     AH = 04h
  6090.     AL = break status
  6091.         00h if break
  6092.         01h if no break
  6093.     BH = parity (see below)
  6094.     BL = number of stop bits
  6095.         00h one stop bit
  6096.         01h two stop bits (1.5 if 5 bit word length)
  6097.     CH = word length (see below)
  6098.     CL = bps rate (see below)
  6099.     DX = port number
  6100. Return: AX = port status code (see AH=00h)
  6101. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  6102.  
  6103. Values for parity:
  6104.  00h no parity
  6105.  01h odd parity
  6106.  02h even parity
  6107.  03h stick parity odd
  6108.  04h stick parity even
  6109.  
  6110. Values for word length:
  6111.  00h 5 bits
  6112.  01h 6 bits
  6113.  02h 7 bits
  6114.  03h 8 bits
  6115.  
  6116. Values for bps rate:
  6117.  00h 110
  6118.  01h 150
  6119.  02h 300
  6120.  03h 600
  6121.  04h 1200
  6122.  05h 2400
  6123.  06h 4800
  6124.  07h 9600
  6125.  08h 19200
  6126. --------S-1404-------------------------------
  6127. INT 14 - FOSSIL - INITIALIZE DRIVER
  6128.     AH = 04h
  6129.     DX = port number
  6130.     optionally BX=4F50h
  6131.            ES:CX -> byte to be set upon ^C
  6132. Return: AX = 1954h (if successful)
  6133.     BL = maximum function number supported (excluding 7Eh and above)
  6134.     BH = revision of FOSSIL specification supported
  6135.     DTR is raised
  6136. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  6137.       following byte contains the maximum function number supported; this
  6138.       can serve as an installation check
  6139. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  6140. Index:    installation check;FOSSIL
  6141. --------S-1404-------------------------------
  6142. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  6143.     AH = 04h
  6144. Return: port initialized; if Hayes-compatible modem, a connection has been
  6145.       established
  6146. Note:    the port number is stored at offset BEh in the Task Control Block
  6147.       (see INT 15/AH=13h"MultiDOS")
  6148. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6149. --------S-1404-------------------------------
  6150. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  6151.     AH = 04h
  6152.     AL = initializing parameters
  6153.         bits 7-5 unused
  6154.         bits 4,3: parity (00 none, 01 odd, 11 even)
  6155.         bit 2: stop bits (0 = one, 1 = two)
  6156.         bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  6157.     BX = baud rate
  6158.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6159. Return: AH = status
  6160.         00h successful
  6161.         FFh error
  6162. SeeAlso: AH=05h"Digiboard"
  6163. --------S-1404-------------------------------
  6164. INT 14 - MBBIOS - INQUIRY
  6165.     AH = 04h
  6166. Return: AH = AAh
  6167.     AL = 55h
  6168. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  6169. --------S-1405-------------------------------
  6170. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  6171.     AH = 05h
  6172.     AL = function
  6173.         00h read modem control register
  6174.           Return: BL = modem control register (see below)
  6175.               AH = status
  6176.         01h write modem control register
  6177.           BL = modem control register (see below)
  6178.           Return: AX = status
  6179.     DX = port number
  6180. Note:    also supported by ArtiCom
  6181. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  6182.  
  6183. Bitfields for modem control register:
  6184.  bit 0    data terminal ready
  6185.  bit 1    request to send
  6186.  bit 2    OUT1
  6187.  bit 3    OUT2
  6188.  bit 4    LOOP
  6189.  bits 5-7 reserved
  6190. --------S-1405-------------------------------
  6191. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  6192.     AH = 05h
  6193.     DX = port number
  6194. Return: none
  6195.     DTR is not affected
  6196. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  6197. --------S-1405-------------------------------
  6198. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  6199.     AH = 05h
  6200.     AL = timeout in seconds (00h = never)
  6201. Return: AL = status
  6202.         00h successful
  6203.         AH = character read
  6204.         01h read error
  6205.         02h timed out
  6206.         other modem status (CTS, DSR) changed
  6207. Note:    the port number is stored at offset BEh in the Task Control Block
  6208. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  6209. SeeAlso: INT 15/AH=13h"MultiDOS"
  6210. --------S-1405-------------------------------
  6211. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  6212.     AH = 05h
  6213.     AL = protocol
  6214.         bits 7-4 unused
  6215.         bit 3: RTS/CTS
  6216.         bit 2: DSR
  6217.         bits 1,0: XON/XOFF
  6218.     BH = new XOFF character (00h = current)
  6219.     BL = new XON character (00h = current)
  6220.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6221. Return: AH = status
  6222.         00h successful
  6223.         FFh error
  6224. SeeAlso: AH=04h"Digiboard"
  6225. --------S-1405-------------------------------
  6226. INT 14 - MBBIOS - DROP DTR AND RTS
  6227.     AH = 05h
  6228.     DX = port number
  6229. Return: none
  6230. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  6231. --------S-1406-------------------------------
  6232. INT 14 - FOSSIL - RAISE/LOWER DTR
  6233.     AH = 06h
  6234.     DX = port
  6235.     AL = DTR state to be set
  6236.         00h = lower
  6237.         01h = raise
  6238. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  6239. --------S-1406-------------------------------
  6240. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  6241.     AH = 06h
  6242.     AL = character
  6243. Return: AL = status
  6244.         00h successful
  6245. Notes:    the port number is stored at offset BEh in the Task Control Block
  6246.     if output queue is full, the calling task is blocked until the
  6247.       character can be stored
  6248. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  6249. SeeAlso: INT 15/AH=13h"MultiDOS"
  6250. --------S-1406-------------------------------
  6251. INT 14 - MBBIOS - RAISE DTR AND RTS
  6252.     AH = 06h
  6253.     DX = port number
  6254. Return: none
  6255. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  6256. --------S-1407-------------------------------
  6257. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  6258.     AH = 07h
  6259. Return: AL = timer tick interrupt number
  6260.     AH = ticks per second on interrupt number in AL
  6261.     DX = approximate number of milliseconds per tick
  6262. SeeAlso: AH=16h
  6263. --------S-1407-------------------------------
  6264. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  6265.     AH = 07h
  6266. Return: CL = modem status (see AH=03h)
  6267.     CH = character at head of input queue (if any)
  6268.     DX = number of characters in input queue
  6269. Note:    the port number is stored at offset BEh in the Task Control Block
  6270. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  6271. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6272. --------S-1407-------------------------------
  6273. INT 14 - MBBIOS - SEND BREAK
  6274.     AH = 07h
  6275.     DX = port number
  6276. Return: none
  6277. SeeAlso: AH=06h"MBBIOS"
  6278. --------S-1408-------------------------------
  6279. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  6280.     AH = 08h
  6281.     DX = port number
  6282. SeeAlso: AH=09h"FOSSIL"
  6283. --------S-1408-------------------------------
  6284. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  6285.     AH = 08h
  6286. Return: AL = line status (see AH=03h)
  6287.     AH destroyed
  6288. Notes:    the port number is stored at offset BEh in the Task Control Block
  6289.     on every line status change, the line status is ORed with the line
  6290.       status accumulator; this function returns the accumulator and clears
  6291.       it
  6292. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6293. --------S-1408-------------------------------
  6294. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  6295.     AH = 08h
  6296.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6297. Return: AH = RS232 status bits (see AH=03h)
  6298.     ZF set if no characters queued
  6299.     ZF clear if character available
  6300.         AL = next character
  6301. SeeAlso: AH=03h,AH=09h"Digiboard"
  6302. --------S-1408-------------------------------
  6303. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  6304.     AH = 08h
  6305.     DX = port number
  6306. Return: AL = character
  6307.     AH = status (see AH=02h)
  6308. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  6309. --------S-1409-------------------------------
  6310. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  6311.     AH = 09h
  6312.     DX = port number
  6313. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  6314. --------S-1409-------------------------------
  6315. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  6316.     AH = 09h
  6317. Return: modem status byte cleared
  6318. Note:    the port number is stored at offset BEh in the Task Control Block
  6319. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6320. --------S-1409-------------------------------
  6321. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  6322.     AH = 09h
  6323.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6324. Return: AH = status
  6325.         00h successful
  6326.         FFh error
  6327. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  6328. --------S-1409-------------------------------
  6329. INT 14 - MBBIOS - GET/SET OPTIONS
  6330.     AH = 09h
  6331.     AL = option byte
  6332.         00000001b - Transmit Buffering Enabled
  6333.         00000101b - Hardware Handshaking Enabled
  6334.         00100000b - High Speed Option Enabled
  6335.     DX = port number???
  6336. Return: AL = old option byte
  6337. SeeAlso: AH=04h"MBBIOS",AH=10h"FOSSIL"
  6338. --------S-140A-------------------------------
  6339. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  6340.     AH = 0Ah
  6341.     DX = port number
  6342. SeeAlso: AH=09h"FOSSIL",AH=85h
  6343. --------S-140A-------------------------------
  6344. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  6345.     AH = 0Ah
  6346.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6347. Return: AX = number of characters available in buffer
  6348. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  6349. --------S-140A-------------------------------
  6350. INT 14 - MBBIOS - WRITE BUFFER
  6351.     AH = 0Ah
  6352.     CX = count
  6353.     ES:DI -> buffer
  6354. Return: AX = status (see AH=03h)
  6355.     DI = is updated
  6356.     CX = unsent character count
  6357. SeeAlso: AH=0Bh"MBBIOS",AH=19h"FOSSIL"
  6358. --------S-140B-------------------------------
  6359. INT 14 - FOSSIL - TRANSMIT NO WAIT
  6360.     AH = 0Bh
  6361.     AL = character
  6362.     DX = port number
  6363. Return: AX = 0000h character not accepted
  6364.        = 0001h character accepted
  6365. SeeAlso: AH=01h
  6366. --------S-140B-------------------------------
  6367. INT 14 - MBBIOS - READ BUFFER
  6368.     AH = 0Bh
  6369.     CX = size of buffer
  6370.     ES:DI -> buffer
  6371. Return: AH = LSR
  6372.     AL = MSR
  6373.     CX = count of characters
  6374.     DI = is updated
  6375. SeeAlso: AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=18h"FOSSIL"
  6376. --------S-140C-------------------------------
  6377. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  6378.     AH = 0Ch
  6379.     DX = port number
  6380. Return: AX = FFFFh character not available
  6381.     AX = 00xxh character xx available
  6382. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  6383. --------S-140D-------------------------------
  6384. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  6385.     AH = 0Dh
  6386. Return: AX = FFFFh character not available
  6387.        = xxyyh standard IBM-style scan code
  6388. SeeAlso: AH=0Eh
  6389. --------S-140D-------------------------------
  6390. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  6391.     AH = 0Dh
  6392.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6393. Return: ES:BX -> CH_KEY_RDY flag
  6394. SeeAlso: AH=0Ah"Digiboard"
  6395.  
  6396. Values for CH_KEY_RDY flag:
  6397.  00h    receive buffer empty
  6398.  FFh    characters available
  6399. --------S-140E-------------------------------
  6400. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  6401.     AH = 0Eh
  6402. Return: AX = xxyyh standard IBM-style scan code
  6403. SeeAlso: AH=0Dh"FOSSIL"
  6404. --------S-140E-------------------------------
  6405. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  6406.     AH = 0EH
  6407.     CX = number of characters to write
  6408.     ES:BX -> string
  6409.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6410. Return: AX = number of characters actually written
  6411.     ZF clear if successful
  6412.     ZF set on error
  6413. SeeAlso: AH=0Fh"Digiboard"
  6414. --------S-140F-------------------------------
  6415. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  6416.     AH = 0Fh
  6417.     AL = bit mask describing requested flow control (see below)
  6418.     DX = port number
  6419. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  6420.  
  6421. Bitfields for requested flow control:
  6422.  bit 0    XON/XOFF on transmit (watch for XOFF while sending)
  6423.  bit 1    CTS/RTS (CTS on transmit/RTS on receive)
  6424.  bit 2    reserved
  6425.  bit 3    XON/XOFF on receive (send XOFF when buffer near full)
  6426.  bit 4-7 all 1
  6427. --------S-140F-------------------------------
  6428. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  6429.     AH = 0Fh
  6430.     CX = number of characters to read
  6431.     ES:BX -> buffer
  6432.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6433. Return: AX = number of characters read
  6434.     ZF clear if successful
  6435.     ZF set on error (line status or wrong number of characters)
  6436. SeeAlso: AH=0Eh"Digiboard"
  6437. --------S-1410-------------------------------
  6438. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  6439.     AH = 10h
  6440.     AL = bit mask
  6441.         bit 0: enable/disable ^C/^K checking
  6442.         bit 1: enable/disable the transmitter
  6443.     DX = port number
  6444. SeeAlso: AH=0Fh"FOSSIL"
  6445. --------S-1410-------------------------------
  6446. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  6447.     AH = 10h
  6448.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6449. Return: AH = status
  6450.         00h successful
  6451.         FFh error
  6452. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  6453. --------S-1411-------------------------------
  6454. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  6455.     AH = 11h
  6456.     DH = row
  6457.     DL = column
  6458. Note:    this is the same as INT 10/AH=02h
  6459. SeeAlso: AH=12h"FOSSIL"
  6460. --------S-1411-------------------------------
  6461. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  6462.     AH = 11h
  6463.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6464. Return: AH = status
  6465.         00h successful
  6466.         FFh error
  6467. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  6468. --------S-1412-------------------------------
  6469. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  6470.     AH = 12h
  6471. Return: DH = row
  6472.     DL = column
  6473. Note:    this is the same as INT 10/AH=03h
  6474. SeeAlso: AH=11h"FOSSIL"
  6475. --------S-1412-------------------------------
  6476. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  6477.     AH = 12h
  6478.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6479. Return: AX = number of bytes free
  6480. SeeAlso: AH=0Ah"Digiboard"
  6481. --------S-1413-------------------------------
  6482. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  6483.     AH = 13h
  6484.     AL = character
  6485. Note:    should not be called if it is unsafe to call DOS
  6486. SeeAlso: AH=15h
  6487. --------S-1414-------------------------------
  6488. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  6489.     AH = 14h
  6490.     AL = 01h enable watchdog
  6491.          00h disable watchdog
  6492.     DX = port number
  6493. --------S-1415-------------------------------
  6494. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  6495.     AH = 15h
  6496.     AL = character
  6497. SeeAlso: AH=13h
  6498. --------S-1416-------------------------------
  6499. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  6500.     AH = 16h
  6501.     AL = function
  6502.         00h = delete
  6503.         01h = add
  6504.     ES:DX -> routine to call
  6505. Return: AX = status
  6506.         0000h successful
  6507.         0001h unsuccessful
  6508. SeeAlso: AH=07h"FOSSIL"
  6509. --------S-1416-------------------------------
  6510. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  6511.     AH = 16h
  6512.     AL = CCB command number (see below)
  6513.     BL = byte 2
  6514.     BH = byte 3
  6515.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  6516.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6517. Return: AH = status
  6518.         00h successful
  6519.         FFh error
  6520. SeeAlso: AH=18h"Digiboard"
  6521.  
  6522. Values for CCB command number:
  6523.  40h Set Receive Mid Water Mark
  6524.  41h Set Receive High Water Mark
  6525.  42h Flush Receive Buffer
  6526.  43h Flush Transmit Buffer
  6527.  44h Transmit Pause
  6528.  45h Transmit Resume
  6529.  46h Set Interrupt to Host Mask
  6530.  47h Set Baud, Data, Stop and Parity
  6531.  48h Send Break
  6532.  49h Set Modem Lines
  6533.  4Ah Set Break Count
  6534.  4Bh Set Handshake
  6535.  4Ch Set Xon/Xoff Characters
  6536.  4Dh Set Transmit Mid Water Mark
  6537.  4Eh IRQ Polling Timer to Host
  6538.  4Fh Buffer Set All
  6539.  50h Port On
  6540.  51h Port Off
  6541.  52h Receive Pause
  6542.  53h Special Character Interrupt
  6543.  54h RS-422 Enable
  6544. --------S-1417-------------------------------
  6545. INT 14 - FOSSIL - REBOOT SYSTEM
  6546.     AH = 17h
  6547.     AL = method
  6548.         00h = cold boot
  6549.         01h = warm boot
  6550. SeeAlso: INT 19
  6551. --------S-1418-------------------------------
  6552. INT 14 - FOSSIL - READ BLOCK
  6553.     AH = 18h
  6554.     CX = maximum number of characters to transfer
  6555.     DX = port number
  6556.     ES:DI -> user buffer
  6557. Return: AX = number of characters transferred
  6558. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  6559. --------S-1418-------------------------------
  6560. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  6561.     AH = 18h
  6562.     ES:BX -> 16-byte command string
  6563.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6564. Return: AH = status
  6565.         00h successful
  6566.         80h timeout
  6567.     AL = mailbox status
  6568.         00h no errors
  6569.         8Xh BIOS error
  6570.     ES:BX buffer filled in with mailbox string
  6571.     ZF clear if no errors
  6572.     ZF set if either status byte contains an error code
  6573. SeeAlso: AH=16h"Digiboard"
  6574. --------S-1419-------------------------------
  6575. INT 14 - FOSSIL - WRITE BLOCK
  6576.     AH = 19h
  6577.     CX = maximum number of characters to transfer
  6578.     DX = port number
  6579.     ES:DI -> user buffer
  6580. Return: AX = number of characters transferred
  6581. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  6582. --------S-1419-------------------------------
  6583. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  6584.     AH = 19h
  6585.     BL = flag
  6586.         00h disable special character interrupt
  6587.         FFh enable interrupt
  6588.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6589. Return: AH = status
  6590.         00h successful    
  6591.         FFh failed
  6592. SeeAlso: AH=1Ah"Digiboard"
  6593. --------S-141A-------------------------------
  6594. INT 14 - FOSSIL - BREAK BEGIN OR END
  6595.     AH = 1Ah
  6596.     AL = 00h stop sending 'break'
  6597.          01h start sending 'break'
  6598.     DX = port number
  6599. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  6600. --------S-141A-------------------------------
  6601. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  6602.     AH = 1Ah
  6603.     BX = subfunction
  6604.         00h return pointer to special character flag byte
  6605.         01h return pointer to special character counter word
  6606.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6607. Return: ES:BX -> special character flag or counter
  6608. Notes:    flag is FFh if one or more special characters are in the receive
  6609.       buffer; it is 00h and the counter is invalid if no special characters
  6610.       are in the receive buffer
  6611.     counter (if valid) contains the number of characters in the receive
  6612.       buffer up to and including the last-received special character
  6613. --------S-141B-------------------------------
  6614. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  6615.     AH = 1Bh
  6616.     DX = port number
  6617.     CX = size of user buffer
  6618.     ES:DI -> user buffer for driver info (see below)
  6619. Return: AX = number of characters transferred
  6620.     CX = 3058h ("0X") (X00 FOSSIL only)
  6621.     DX = 2030h (" 0") (X00 FOSSIL only)
  6622.  
  6623. Format of driver info:
  6624. Offset    Size    Description
  6625.  00h    WORD    size of structure in bytes
  6626.  02h    BYTE    FOSSIL spec driver conforms to
  6627.  03h    BYTE    revision level of this specific driver
  6628.  04h    DWORD    pointer to ASCIZ identification string
  6629.  08h    WORD    size of the input buffer
  6630.  0Ah    WORD    number of bytes left in buffer
  6631.  0Ch    WORD    size of the output buffer
  6632.  0Eh    WORD    number of bytes left in buffer
  6633.  10h    BYTE    width of screen
  6634.  11h    BYTE    length of screen
  6635.  12h    BYTE    actual baud rate, computer to modem
  6636. --------S-141C-------------------------------
  6637. INT 14 - X00 FOSSIL - ACTIVATE PORT
  6638.     AH = 1Ch
  6639.     DX = port number
  6640. Return: AX = 1954h if successful
  6641.     BL = maximum function number supported (not including 7Eh and above)
  6642.     BH = revision of FOSSIL specification supported
  6643. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  6644.       with the PS/2 BIOS in a future release
  6645. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  6646. --------S-141D-------------------------------
  6647. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  6648.     AH = 1Dh
  6649.     DX = port number
  6650. Return: none
  6651. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  6652.       with the PS/2 BIOS in a future release
  6653.     ignored if the port was never activated with AH=04h or AH=1Ch
  6654. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  6655. --------S-141E-------------------------------
  6656. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  6657.     AH = 1Eh
  6658.     AL = break status
  6659.         00h if break
  6660.         01h if no break
  6661.     BH = parity (see below)
  6662.     BL = number of stop bits
  6663.         00h one stop bit
  6664.         01h two stop bits (1.5 if 5 bit word length)
  6665.     CH = word length (see below)
  6666.     CL = bps rate (see below)
  6667.     DX = port number
  6668. Return: AX = port status code (see AH=00h)
  6669. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  6670.     if the port was locked at X00 load time, the appropriate parameters are
  6671.       ignored
  6672. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  6673.  
  6674. Values for parity:
  6675.  00h no parity
  6676.  01h odd parity
  6677.  02h even parity
  6678.  03h stick parity odd
  6679.  04h stick parity even
  6680.  
  6681. Values for word length:
  6682.  00h 5 bits
  6683.  01h 6 bits
  6684.  02h 7 bits
  6685.  03h 8 bits
  6686.  
  6687. Values for bps rate:
  6688.  00h 110
  6689.  01h 150
  6690.  02h 300
  6691.  03h 600
  6692.  04h 1200
  6693.  05h 2400
  6694.  06h 4800
  6695.  07h 9600
  6696.  08h 19200
  6697. --------S-141F-------------------------------
  6698. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  6699.     AH = 1Fh
  6700.     AL = 00h read modem control register
  6701.           Return: BL = modem control register (see below)
  6702.               AH = status
  6703.     AL = 01h write modem control register
  6704.           BL = modem control register (see below)
  6705.           Return: AX = status
  6706.     DX = port number
  6707. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  6708.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  6709. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  6710.  
  6711. Bitfields for modem control register:
  6712.  bit 0    data terminal ready
  6713.  bit 1    request to send
  6714.  bit 2    OUT1
  6715.  bit 3    OUT2 (interrupts) enabled
  6716.  bit 4    LOOP
  6717.  bits 5-7 reserved
  6718. --------S-1420-------------------------------
  6719. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  6720.     AH = 20h
  6721.     DX = port number
  6722. Return: AH = 00h if character was available
  6723.         AL = next character (removed from receive buffer)
  6724.     AX = FFFFh if no character available
  6725. SeeAlso: AH=0Ch,AH=21h"X00"
  6726. --------S-1420-------------------------------
  6727. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  6728.     AH = 20h
  6729.     AL = logical port (01h COM1, 02h COM2)
  6730.     DX = physical port number
  6731. Return: AX = status
  6732.         0000h successful
  6733.         FFFFh failed
  6734. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  6735. --------S-1420-------------------------------
  6736. INT 14 - MultiDOS Plus - INITIALIZE PORT
  6737.     AH = 20h
  6738.     AL = port parameters (see AH=00h"SERIAL")
  6739.     DX = port number (0-3)
  6740. Return: AH = status
  6741.         00h successful
  6742.         41h no such port
  6743.         64h monitor mode already active
  6744. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  6745. --------S-1421-------------------------------
  6746. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  6747.     AH = 21h
  6748.     AL = character
  6749.     DX = port number
  6750. Notes:    the given character is inserted at the end of the receive buffer as if
  6751.       it had just arrived from the serial port; all normal receive
  6752.       processing (XON/XOFF, ^C/^K) is performed on the character
  6753.     fully re-entrant
  6754. SeeAlso: AH=20h"X00"
  6755. --------S-1421-------------------------------
  6756. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  6757.     AH = 21h
  6758.     DX = physical port number
  6759. Return: AX = status
  6760.         0000h successful
  6761.         FFFFh failed
  6762. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  6763. --------S-1421-------------------------------
  6764. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  6765.     AH = 21h
  6766.     AL = character to send
  6767.     DX = port number
  6768. Return: AH = status (see below)
  6769. Note:    monitor mode must have been turned on with AH=24h before calling
  6770. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  6771.  
  6772. Values for status:
  6773.  00h successful
  6774.  39h no DSR or CTS
  6775.  3Ch no DSR
  6776.  3Bh no CTS
  6777.  41h no such port
  6778.  42h monitor mode not active
  6779.  97h timed out
  6780. --------S-1422-------------------------------
  6781. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  6782.     AH = 22h
  6783.     AL = logical port (01h COM1, 02h COM2)
  6784. Return: AX = status (0000h successful)
  6785. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  6786. --------S-1422-------------------------------
  6787. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  6788.     AH = 22h
  6789.     DX = port number
  6790. Return: AH = status (see also AH=21h"MultiDOS")
  6791.         00h successful
  6792.         AL = character
  6793.         3Dh framing and parity error
  6794.         3Eh overrun error
  6795.         3Fh framing error
  6796.         40h parity error
  6797.         96h ring buffer overflow
  6798. Note:    if no character is available, this function waits until a character
  6799.       arrives or an implementation-dependent timeout elapses
  6800. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  6801. --------S-1423-------------------------------
  6802. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  6803.     AH = 23h
  6804.     AL = logical port (01h COM1, 02h COM2)
  6805.     DH = user ID
  6806.     DL = process ID (DH,DL both FFh for current task)
  6807. Return: AL = MW386 port mode (see below)
  6808.     CX = MW386 port number
  6809.     DH = owner's user ID
  6810.     DL = owner's task ID
  6811. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  6812.  
  6813. Bitfields for MW386 port mode:
  6814.  bit 0    port is shared (spooler only)
  6815.  bit 1    port is spooled instead of direct (spooler only)
  6816.  bit 2    port is assigned as logical COM device, not in spooler
  6817.  bit 3    port is free
  6818. --------S-1423-------------------------------
  6819. INT 14 - MultiDOS Plus - GET PORT STATUS
  6820.     AH = 23h
  6821.     DX = port number
  6822. Return: AH = line status (see AH=03h)
  6823.     AL = modem status (see AH=03h)
  6824. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  6825. --------S-1424-------------------------------
  6826. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  6827.     AH = 24h
  6828.     CX = physical I/O port number
  6829.     DS:DX -> configuration table (see below)
  6830. Return: AH = 00h
  6831. Note:    invalid port numbers are merely ignored
  6832. SeeAlso: INT 17/AH=96h
  6833.  
  6834. Format of configuration table:
  6835. Offset    Size    Description
  6836.  00h    BYTE    baud rate (see below)
  6837.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  6838.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  6839.  03h    BYTE    stop bits (00h=1, 01h=2)
  6840.  04h    BYTE    receive flow control
  6841.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  6842.  05h    BYTE    transmit flow control (as for receive)
  6843.  
  6844. Values for baud rate:
  6845.  00h 38400
  6846.  01h 19200
  6847.  02h  9600
  6848.  03h  7200
  6849.  04h  4800
  6850.  05h  3600
  6851.  06h  2400
  6852.  07h  2000
  6853.  08h  1200
  6854.  09h   600
  6855.  0Ah   300
  6856.  0Bh   150
  6857.  0Ch   134.5
  6858. --------S-1424-------------------------------
  6859. INT 14 - MultiDOS Plus - SET MONITOR MODE
  6860.     AH = 24h
  6861.     AL = port status storage
  6862.         00h single status for entire receive buffer
  6863.         01h separate status kept for each byte in receive buffer
  6864.     DX = port number
  6865. Return: AH = status
  6866.         00h successful
  6867.         3Ah invalid status storage specified
  6868.         41h no such port
  6869.         64h monitor mode already active
  6870. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  6871.       port
  6872. SeeAlso: AH=20h"MultiDOS",AH=25h
  6873. --------S-1425-------------------------------
  6874. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  6875.     AH = 25h
  6876.     AL = function
  6877.         00h only clear buffers
  6878.         01h clear buffers and deactivate
  6879.     DX = port number
  6880. Return: AH = status
  6881.         00h successful
  6882.         3Ah invalid function
  6883.         41h no such port
  6884.         42h monitor mode not active
  6885. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  6886. --------S-1427-------------------------------
  6887. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  6888.     AH = 27h
  6889.     DX = port number
  6890. Return: AH = status
  6891.         00h successful
  6892.         41h no such port
  6893.         42h monitor mode not active
  6894.     AL = number of characters in receive buffer
  6895. --------S-147E-------------------------------
  6896. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  6897.     AH = 7Eh
  6898.     AL = code assigned to external application (80h-BFh)
  6899.         80h reserved for communications FOSSIL
  6900.         81h video FOSSIL
  6901.         82h reserved for keyboard FOSSIL
  6902.         83h reserved for system FOSSIL
  6903.     ES:DX -> entry point
  6904. Return: AX = 1954h
  6905.     BL = code assigned to application (same as input AL)
  6906.     DH = 00h failed
  6907.          01h successful
  6908. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  6909. --------S-147F-------------------------------
  6910. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  6911.     AH = 7Fh
  6912.     AL = code assigned to external application
  6913.     ES:DX -> entry point
  6914. Return: AX = 1954h
  6915.     BL = code assigned to application (same as input AL)
  6916.     DH = 00h failed
  6917.          01h successful
  6918. SeeAlso: AH=7Eh
  6919. --------S-1480-------------------------------
  6920. INT 14 - COMMUNICATIONS FOSSIL
  6921.     AH = 80h
  6922. SeeAlso: AH=7Eh
  6923. --------S-1480-------------------------------
  6924. INT 14 - COURIERS.COM - INSTALLATION CHECK
  6925.     AH = 80h
  6926. Return: AH = E8h if loaded
  6927. Program: COURIERS is a TSR utility by PC Magazine
  6928. --------S-148000-----------------------------
  6929. INT 14 - ARTICOM - INSTALLATION CHECK
  6930.     AX = 8000h
  6931. Return: AL = FFh if installed
  6932.         BH = major version
  6933.         BL = minor version
  6934. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  6935.       works on top of NetBIOS and allows modem/serial-port sharing by
  6936.       programs using INT 14 for serial I/O.
  6937. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cars and
  6938.       drivers
  6939. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  6940. --------S-148001-----------------------------
  6941. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  6942.     AX = 8001h
  6943. Return: AX = error code, if error (see AX=8003h)
  6944. SeeAlso: AX=8000h,AX=8002h,AX=8003h
  6945. --------S-148002-----------------------------
  6946. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  6947.     AX = 8002h
  6948.     ES:DI -> buffer for redirector status structure (see below)
  6949. Return: AX = error code, if error (see AX=8003h)
  6950. SeeAlso: AX=8000h,AX=8003h
  6951.  
  6952. Format of redirector status:
  6953. Offset    Size    Description  
  6954.  00h    WORD    redirector major and minor version numbers
  6955.  02h    WORD    redirectable ports found
  6956.  04h    WORD    redirectable ports + local ports found
  6957.  06h    WORD    redirector internal buffer size
  6958.  08h    WORD    maximum servers maintained
  6959.  0Ah    WORD    number of adapters found
  6960. --------S-148003-----------------------------
  6961. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  6962.     AX = 8003h
  6963.     CX = error number to translate
  6964. Return: ES:DI -> ASCIZ error text or NULL if can't translate.
  6965. SeeAlso: AX=8000h
  6966.  
  6967. Values for error codes:
  6968.  00h    "No error"
  6969.  01h    "An invalid port number was specified"
  6970.  02h    "Port is already redirected"
  6971.  03h    "Too many ports redirected"
  6972.  04h    "Cannot locate the server"
  6973.  05h    "Server is busy"
  6974.  06h    "Access denied"
  6975.  07h    "Resource in use"
  6976.  08h    "Resource in use - request queued"
  6977.  09h    "No such resource"
  6978.  0Ah    "Invalid username/password pair"
  6979.  0Bh    "Noncompatible version number"
  6980.  0Ch    "Can't remove from memory"
  6981.  0Dh    "Bad NETBIOS adapter number"
  6982.  0Eh    "No more entries in list"
  6983.  0Fh    "Resource is not available at this time"
  6984.  10h    "Invalid value to INT 14 call"
  6985. --------S-148004-----------------------------
  6986. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  6987.     AX = 8004h
  6988.     DX = port to redirect (COM1=0, COM2=1, ...)
  6989.     CH = attach type
  6990.     CL = adapter to use for attach, 0FFh to search all
  6991.     ES:DI -> attachment structure (see below)
  6992. Return: AX = error code, if error (see AX=8003h)
  6993. Note:    The wildcard '*' is supported in the server and resource fields.  If
  6994.       wild cards are used then the first matching available server is
  6995.       attached.
  6996. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  6997.  
  6998. Format of attachment structure:
  6999. Offset    Size    Description  
  7000.  00h 16 BYTEs    server to look for attach
  7001.  10h 16 BYTEs    attach to resource name
  7002.  20h 16 BYTEs    username for attach
  7003.  30h 16 BYTEs    password for username or resource
  7004.  40h    BYTE    attach type
  7005.         00h normal
  7006.         01h queue if resource is in use (not yet supported in v1.00)
  7007. --------S-148005-----------------------------
  7008. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  7009.     AX = 8005h
  7010.     DX = port to detach (COM1=0, COM2=1, ...)
  7011. Return: AX = error code, if error (see AX=8003h)
  7012. Note:    only a previously attached resource can be detached
  7013. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  7014. --------S-148006-----------------------------
  7015. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  7016.     AX = 8006h
  7017.     BX = remote port (COM1=0, COM2=1, ...)
  7018.     CL = adapter number, FFH to try all adapters 
  7019.     ES:DI -> resource information structure (see below)
  7020.     DS:SI -> 16 byte server name. See note.
  7021. Return: AX = error code, if error (see AX=8003h)
  7022.     BX = next remote port, recall to get next resource info
  7023. Note:    Wild cards supported in both the resource field and server name 
  7024.     string DS:SI. If wild cards used then first matching available
  7025.     resource information is searched. Set resource field to 0FFh to
  7026.     return all resources.
  7027. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  7028.  
  7029. Format of resource information structure:
  7030. Offset    Size    Description
  7031.  00h    BYTE    00h = free, else used
  7032.  01h 16 BYTEs    resource name
  7033.  11h 16 BYTEs    username of resource user
  7034.  21h    WORD    amount of time used
  7035.  23h    WORD    amount of time remaining
  7036.  53h 48 BYTEs    description of resource
  7037.  93h 64 BYTEs    initialization string for modem 
  7038.  B3h 32 BYTEs    dial string for modem 
  7039.  D3h 32 BYTEs    hang-up string for modem 
  7040. --------S-148007-----------------------------
  7041. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  7042.     AX = 8007h
  7043.     DX = port index (COM1=0, COM2=1, ...)
  7044.     ES:DI -> buffer for port information structure (see below)
  7045. Return: CF clear if redirection info returned and port is redirected
  7046.     CF set if not a redirected port
  7047.     AX = error code, if error (see AX=8003h)
  7048. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  7049.  
  7050. Format of port information structure:
  7051. Offset    Size    Description
  7052.  00h 16 BYTEs    server name resource is on
  7053.  10h    BYTE    adapter number server is on
  7054.  11h    BYTE    resource name
  7055.  21h    WORD    remote port index, use to get additional information
  7056.  23h    WORD    buffer size
  7057.  25h    WORD    baud rate (see below)
  7058.  26h    BYTE    modem status register
  7059.  27h    BYTE    modem control register
  7060.  28h    BYTE    line status register
  7061.  29h    BYTE    line control register
  7062.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  7063.  2Bh    WORD    send timeout in ticks
  7064.  2Dh    WORD    receive timeout in ticks
  7065.  2Fh    WORD    time used on remote port
  7066.  31h    WORD    time left before timeout
  7067.  33h    BYTE    if server changes allowed?
  7068.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  7069.  
  7070. Values for baud rate:
  7071.  00h    110
  7072.  01h    150
  7073.  02h    300
  7074.  03h    600
  7075.  04h    1200
  7076.  05h    2400
  7077.  06h    4800
  7078.  07h    9600
  7079.  08h    19200
  7080.  09h    38400
  7081.  0Ah    57600
  7082.  0Bh    115200
  7083.  0Ch    134.5
  7084.  0Dh    1800
  7085.  0Eh    2000
  7086.  0Fh    3600
  7087.  10h    7200
  7088. --------S-148008-----------------------------
  7089. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  7090.     AX = 8008h
  7091.     BX = server index (0,1,...)
  7092.     ES:DI -> server name structure (see below)
  7093. Return: AX = error code, if error (see AX=8003)
  7094.     BX = next remote port, repeat call to get next available server
  7095. Note:    the wildcard '*' is supported in the server name field.     Set the
  7096.       server name to FFh to search for all servers.
  7097. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  7098.  
  7099. Format of server name structure:
  7100. Offset     Size      Description
  7101.   00h 16 BYTEs      (call) ASCIZ servername
  7102.   10h     BYTE      (return) the adapter server is found
  7103. --------S-148009-----------------------------
  7104. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS 
  7105.     AX = 8009h
  7106.     BX = send timeout in ticks
  7107.     CX = receive timeout in ticks
  7108.     DX = port index (COM1=0, COM2=1, ...)
  7109. Return: nothing
  7110. SeeAlso: AX=8000h,AX=800Ah
  7111. --------S-14800A-----------------------------
  7112. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  7113.     AX = 800Ah
  7114.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  7115.     DX = port index (COM1=0, COM2=1, ...)
  7116. Return: AX = error code, if error (see AX=8003h)
  7117. Note:    for attached ports only!
  7118. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  7119. --------S-148025-----------------------------
  7120. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  7121.     AX = 8025h
  7122.     DS:DX -> address of trap function (see below) to call on read/write
  7123. Note:    setting the vector to a user function allows the redirector's activity
  7124.       to be monitored.
  7125. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  7126.  
  7127. Trap function called with:
  7128.     AH = operation
  7129.         80h reading character
  7130.         81h writing character
  7131.     AL = character
  7132.     Return: AX must be preserved
  7133.         far JUMP to old trap function (see AX=8035h)
  7134. --------S-148035-----------------------------
  7135. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  7136.     AX = 8035h
  7137. Return: ES:BX -> address of current send/receive routine
  7138. Note:    this function returns the address of the routine which is called 
  7139.       inside A-REDIR.EXE each time a character is received or sent on the
  7140.       active COM port.
  7141. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  7142. --------S-1481-------------------------------
  7143. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  7144.     AH = 81h
  7145.     AL = port number (1-4)
  7146. Return: AH = 00h port available
  7147.          01h port exists but already in use
  7148.          02h port nonexistent
  7149. Program: COURIERS is a TSR utility by PC Magazine
  7150. SeeAlso: AH=83h,AH=8Dh
  7151. --------S-1481-------------------------------
  7152. INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
  7153.     AH = 81h
  7154.     BX:DI -> port control block
  7155. Return: ???
  7156. SeeAlso: AH=00h
  7157.  
  7158. Format of port control block:
  7159. Offset    Type    Description
  7160.  00h    WORD    port IO address
  7161.  02h    WORD    port IRQ
  7162.  04h    WORD    baud rate
  7163.  06h    WORD    parity
  7164.  08h    WORD    data bits
  7165.  0Ah    WORD    stop bits
  7166.  0Ch    WORD    break status
  7167.          0000h off
  7168.  0Eh    WORD    flow control protocol
  7169.  10h    BYTE    input block
  7170.  11h    BYTE    output block
  7171.  12h    WORD    low threshold
  7172.  14h    WORD    high threshold
  7173.  16h    WORD    segment of buffer
  7174.  18h    WORD    offset of buffer
  7175.  1Ah    WORD    input buffer length
  7176.  1Ch    WORD    output buffer length
  7177.  1Eh    BYTE    auxiliary address
  7178.  1Fh    BYTE    spare
  7179.  20h  4 WORDs    spares
  7180. --------V-148100-----------------------------
  7181. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  7182.     AX = 8100h
  7183.     ES:DI -> buffer for VFOSSIL information (see below)
  7184. Return: AX = 1954h if installed
  7185. SeeAlso: AH=7Eh,AX=8101h
  7186.  
  7187. Format of VFOSSIL information:
  7188. Offset    Size    Description
  7189.  00h    WORD    size of information in bytes, including this field
  7190.  02h    WORD    VFOSSIL major version
  7191.  04h    WORD    VFOSSIL revision level
  7192.  06h    WORD    highest VFOSSIL application function supported
  7193. --------V-148101-----------------------------
  7194. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  7195.     AX = 8101h
  7196.     ES:DI -> buffer for application function table (see below)
  7197.     CX = length of buffer in bytes
  7198. Return: AX = 1954h if installed
  7199.         BH = highest VFOSSIL application function supported
  7200. Note:    the number of initialized pointers in the application function table
  7201.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  7202.       will be initialized
  7203. SeeAlso: AX=8102h
  7204.  
  7205. Format of application function table:
  7206. Offset    Size    Description
  7207.  00h    DWORD    -> function to query current video mode (VioGetMode)
  7208.  04h    DWORD    -> function to set video mode (VioSetMode)
  7209.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  7210.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  7211.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  7212.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  7213.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  7214.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  7215.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  7216.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  7217.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  7218.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  7219.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  7220.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  7221.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  7222.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  7223.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  7224.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  7225.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  7226.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  7227.  
  7228. Format of video mode data structure:
  7229. Offset    Size    Description
  7230.  00h    WORD    length of structure including this field
  7231.  02h    BYTE    mode characteristics
  7232.         bit 0: clear if MDA, set otherwise
  7233.         bit 1: graphics mode
  7234.         bit 2: color disabled (black-and-white)
  7235.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  7236.  04h    WORD    number of text columns
  7237.  06h    WORD    number of text rows
  7238.  08h    WORD    reserved
  7239.  0Ah    WORD    reserved
  7240.  0Ch    DWORD    reserved
  7241.  
  7242. Format of video configuration data:
  7243. Offset    Size    Description
  7244.  00h    WORD    structure length including this field
  7245.  02h    WORD    adapter type
  7246.         00h monochrome/printer
  7247.         01h CGA
  7248.         02h EGA
  7249.         03h VGA
  7250.         07h 8514/A
  7251.  04h    WORD    display type
  7252.         00h monochrome
  7253.         01h color
  7254.         02h enhanced color
  7255.         09h 8514
  7256.  06h    DWORD    adapter memory size
  7257.  
  7258. Format of cursor type record:
  7259. Offset    Size    Description
  7260.  00h    WORD    cursor start line
  7261.  02h    WORD    cursor end line
  7262.  04h    WORD    cursor width (always 01h)
  7263.  06h    WORD    cursor attribute (FFFFh = hidden)
  7264.  
  7265. Call VioGetMode with:
  7266.     STACK:    WORD    VIO handle (must be 00h)
  7267.         DWORD    pointer to video mode data structure (see above)
  7268. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see below)
  7269.  
  7270. Values for error code:
  7271.  0000h    successful
  7272.  0074h    internal VIO failure
  7273.  0163h    unsupported mode
  7274.  0166h    invalid row value
  7275.  0167h    invalid column value
  7276.  017Eh    buffer too small
  7277.  01A5h    invalid VIO parameter
  7278.  01B4h    invalid VIO handle
  7279.  
  7280. Call VioSetMode with:
  7281.     STACK:    WORD    VIO handle (must be 00h)
  7282.         DWORD    pointer to video mode data structure (see above)
  7283. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  7284.  
  7285. Call VioGetConfig with:
  7286.     STACK:    WORD    VIO handle (must be 00h)
  7287.         DWORD    pointer to video configuration data buffer (see above)
  7288. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  7289.  
  7290. Call VioWrtTTY with:
  7291.     STACK:    WORD    VIO handle (must be 00h)
  7292.         WORD    length of string
  7293.         DWORD    pointer to character string to be written to screen
  7294. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7295. Notes:    write wraps at end of line and terminates if it reaches end of screen
  7296.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  7297.       not required to be reentrant; in non-ANSI mode, the function is
  7298.       reentrant and may be called from within an MS-DOS function call
  7299.  
  7300. Call VioGetANSI with:
  7301.     STACK:    WORD    VIO handle (must be 00h)
  7302.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  7303.             or 01h if ANSI is on
  7304. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7305.  
  7306. Call VioSetANSI with:
  7307.     STACK:    WORD    VIO handle (must be 00h)
  7308.         DWORD    pointer to WORD indicating new state of ANSI
  7309.             00h off
  7310.             01h on
  7311. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  7312.  
  7313. Call VioGetCurPos with:
  7314.     STACK:    WORD    VIO handle (must be 00h)
  7315.         DWORD    pointer to WORD to hold current cursor column (0-based)
  7316.         DWORD    pointer to WORD to hold current cursor row (0-based)
  7317. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7318.  
  7319. Call VioSetCurPos with:
  7320.     STACK:    WORD    VIO handle (must be 00h)
  7321.         WORD    cursor column
  7322.         WORD    cursor row
  7323. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7324. Note:    if either coordinate is invalid, the cursor is not moved
  7325.  
  7326. Call VioGetCurType with:
  7327.     STACK:    WORD    VIO handle (must be 00h)
  7328.         DWORD    pointer to cursor type record (see above)
  7329. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7330.  
  7331. Call VioSetCurType with:
  7332.     STACK:    WORD    VIO handle (must be 00h)
  7333.         DWORD    pointer to cursor type record (see above)
  7334. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  7335.  
  7336. Call VioScrollUp with:
  7337.     STACK:    WORD    VIO handle (must be 00h)
  7338.         DWORD    pointer to char/attr cell for filling emptied rows
  7339.         WORD    number or rows to scroll (FFFFh = clear area)
  7340.         WORD    right column of scroll area
  7341.         WORD    bottom row of scroll area
  7342.         WORD    left column of scroll area
  7343.         WORD    top row of scroll area
  7344. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7345.  
  7346. Call VioScrollDn with:
  7347.     STACK:    WORD    VIO handle (must be 00h)
  7348.         DWORD    pointer to char/attr cell for filling emptied rows
  7349.         WORD    number or rows to scroll (FFFFh = clear area)
  7350.         WORD    right column of scroll area
  7351.         WORD    bottom row of scroll area
  7352.         WORD    left column of scroll area
  7353.         WORD    top row of scroll area
  7354. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7355.  
  7356. Call VioReadCellStr with:
  7357.     STACK:    WORD    VIO handle (must be 00h)
  7358.         WORD    column at which to start reading
  7359.         WORD    row at which to start reading
  7360.         DWORD    pointer to WORD containing length of buffer in bytes
  7361.             on return, WORD contains number of bytes actually read
  7362.         DWORD    pointer to buffer for cell string
  7363. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  7364.  
  7365. Call VioReadCharStr with:
  7366.     STACK:    WORD    VIO handle (must be 00h)
  7367.         WORD    column at which to start reading
  7368.         WORD    row at which to start reading
  7369.         DWORD    pointer to WORD containing length of buffer in bytes
  7370.             on return, WORD contains number of bytes actually read
  7371.         DWORD    pointer to buffer for character string
  7372. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  7373.  
  7374. Call VioWrtCellStr with:
  7375.     STACK:    WORD    VIO handle (must be 00h)
  7376.         WORD    column at which to start writing
  7377.         WORD    row at which to start writing
  7378.         WORD    length of cell string in bytes
  7379.         DWORD    pointer to cell string to write
  7380. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7381. Note:    write wraps at end of line and terminates if it reaches end of screen
  7382.  
  7383. Call VioWrtCharStr with:
  7384.     STACK:    WORD    VIO handle (must be 00h)
  7385.         WORD    column at which to start writing
  7386.         WORD    row at which to start writing
  7387.         WORD    length of character string
  7388.         DWORD    pointer to character string to write
  7389. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7390. Note:    write wraps at end of line and terminates if it reaches end of screen
  7391.  
  7392. Call VioWrtCharStrAttr with:
  7393.     STACK:    WORD    VIO handle (must be 00h)
  7394.         DWORD    pointer to attribute to be applied to each character
  7395.         WORD    column at which to start writing
  7396.         WORD    row at which to start writing
  7397.         WORD    length of character string
  7398.         DWORD    pointer to character string to write
  7399. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7400. Note:    write wraps at end of line and terminates if it reaches end of screen
  7401.  
  7402. Call VioWrtNAttr with:
  7403.     STACK:    WORD    VIO handle (must be 00h)
  7404.         WORD    column at which to start writing
  7405.         WORD    row at which to start writing
  7406.         WORD    number of times to write attribute
  7407.         DWORD    pointer to display attribute to replicate
  7408. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7409. Note:    write wraps at end of line and terminates if it reaches end of screen
  7410.  
  7411. Call VioWrtNCell with:
  7412.     STACK:    WORD    VIO handle (must be 00h)
  7413.         WORD    column at which to start writing
  7414.         WORD    row at which to start writing
  7415.         WORD    number of times to write cell
  7416.         DWORD    pointer to cell to replicate
  7417. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7418. Note:    write wraps at end of line and terminates if it reaches end of screen
  7419.  
  7420. Call VioWrtNChar with:
  7421.     STACK:    WORD    VIO handle (must be 00h)
  7422.         WORD    column at which to start writing
  7423.         WORD    row at which to start writing
  7424.         WORD    number of times to write character
  7425.         DWORD    pointer to character to replicate
  7426. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7427. Note:    write wraps at end of line and terminates if it reaches end of screen
  7428. --------V-148102-----------------------------
  7429. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  7430.     AX = 8102h
  7431. Return: AX = 1954h
  7432. Note:    terminates all operations; after this call, the video FOSSIL may either
  7433.       be removed from memory or reinitialized
  7434. SeeAlso: AX=8101h,AX=8103h
  7435. --------V-148103-----------------------------
  7436. INT 14 - VIDEO FOSSIL - UNINSTALL
  7437.     AX = 8103h
  7438. Return:    AX = 1954h
  7439. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  7440. --------K-1482-------------------------------
  7441. INT 14 - KEYBOARD FOSSIL
  7442.     AH = 82h
  7443. SeeAlso: AH=7Eh
  7444. --------S-1482-------------------------------
  7445. INT 14 - COURIERS.COM - CONFIGURE PORT
  7446.     AH = 82h
  7447.     AL = port number (1-4)
  7448.     BX = speed (bps)
  7449.     CX = bit flags
  7450.         bit 0: enable input flow control
  7451.         bit 1: enable output flow control
  7452.         bit 2: use X.PC protocol (not yet implemented)
  7453. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  7454. ----------1483-------------------------------
  7455. INT 14 - SYSTEM FOSSIL
  7456.     AH = 83h
  7457. SeeAlso: AH=7Eh
  7458. --------S-1483-------------------------------
  7459. INT 14 - COURIERS.COM - START INPUT
  7460.     AH = 83h
  7461.     ES:BX -> circular input buffer
  7462.     CX = length of buffer 
  7463.         (should be at least 128 bytes if input flow control enabled)
  7464. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  7465. --------S-1484-------------------------------
  7466. INT 14 - COURIERS.COM - READ CHARACTER
  7467.     AH = 84h
  7468. Return: ZF set if no characters available
  7469.     ZF clear
  7470.        AL = character
  7471.        AH = modem status bits
  7472.         bit 7: set on input buffer overflow
  7473. SeeAlso: AH=02h,AH=86h,AH=89h
  7474. --------S-1485-------------------------------
  7475. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  7476.     AH = 85h
  7477. SeeAlso: AH=0Ah,AH=88h
  7478. --------S-1486-------------------------------
  7479. INT 14 - COURIERS.COM - START OUTPUT
  7480.     AH = 86h
  7481.     ES:BX -> output buffer
  7482.     CX = length of output buffer
  7483. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  7484. --------S-1487-------------------------------
  7485. INT 14 - COURIERS.COM - OUTPUT STATUS
  7486.     AH = 87h
  7487. Return: AX = number of unsent characters
  7488. --------S-1488-------------------------------
  7489. INT 14 - COURIERS.COM - ABORT OUTPUT
  7490.     AH = 88h
  7491. SeeAlso: AH=09h,AH=85h
  7492. --------S-1489-------------------------------
  7493. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  7494.     AH = 89h
  7495.     CL = character to send
  7496. SeeAlso: AH=01h,AH=84h
  7497. --------S-148A-------------------------------
  7498. INT 14 - COURIERS.COM - SEND BREAK
  7499.     AH = 8Ah
  7500. SeeAlso: AH=89h,AH=FAh
  7501. --------S-148C-------------------------------
  7502. INT 14 - COURIERS.COM - SET SPEED
  7503.     AH = 8Ch
  7504.     BX = speed in bps
  7505. SeeAlso: AH=00h,AH=82h"COURIERS"
  7506. --------S-148D-------------------------------
  7507. INT 14 - COURIERS.COM - DECONFIGURE PORT
  7508.     AH = 8Dh
  7509. SeeAlso: AH=82h"COURIERS"
  7510. --------S-14A0-------------------------------
  7511. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  7512.     AH = A0h
  7513.     ES:BX -> ASCIZ internet host name
  7514.     CX = length of name
  7515. Return: AH = return code
  7516.     CL = session ID
  7517. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI"
  7518. --------S-14A0--CXFFFF-----------------------
  7519. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  7520.     AH = A0h
  7521.     CX = FFFFh
  7522. Return: CF clear if successful
  7523.         AX = 5445h ('TE')
  7524.         CX <> FFFFh
  7525.         DX = port number
  7526.     CF set on error
  7527. Program: TES is a network serial port emulation program
  7528. SeeAlso: AH=A1h"TES"
  7529. --------S-14A1-------------------------------
  7530. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  7531.     AH = A1h
  7532.     DH = session ID
  7533. Return: AH = return code
  7534. SeeAlso: AH=A0h"BAPI"
  7535. --------S-14A1-------------------------------
  7536. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  7537.     AH = A1h
  7538. Return: CX = number of active sessions
  7539.     ES:SI -> status array (see below)
  7540. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  7541.  
  7542. Format of status array entry:
  7543. Offset    Size    Description
  7544.  00h    BYTE    status
  7545.  01h    WORD    offset of name
  7546. --------S-14A2-------------------------------
  7547. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  7548.     AH = A2h
  7549.     AL = character
  7550.     DH = session ID
  7551. Return: AH = return code
  7552. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  7553. --------S-14A2-------------------------------
  7554. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  7555.     AH = A2h
  7556. Return:    CX = number of servers
  7557.     ES:SI -> array of offsets from ES for server names
  7558. SeeAlso: AH=A1h"TES"
  7559. --------S-14A3-------------------------------
  7560. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  7561.     AH = A3h
  7562.     DH = session ID
  7563. Return: AH = return code
  7564.     AL = character read
  7565. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI"
  7566. --------S-14A3-------------------------------
  7567. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  7568.     AH = A3h
  7569.     ES:SI -> ???
  7570. Return: CF clear if successful
  7571.         AX = 5445h ('TE')
  7572.         CX <> FFFFh
  7573.         DX = port number
  7574.     CF set on error
  7575. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  7576. --------S-14A4-------------------------------
  7577. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  7578.     AH = A4h
  7579.     CX = length
  7580.     DH = session ID
  7581.     ES:BX -> buffer
  7582. Return: AH = return code
  7583.     CX = number of bytes sent
  7584. SeeAlso: AH=19h,AH=86h,AH=A0"BAPI",AH=A5h"BAPI"
  7585. --------S-14A4-------------------------------
  7586. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  7587.     AH = A4h
  7588.     ???
  7589. Return: ???
  7590. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7591. --------S-14A5-------------------------------
  7592. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  7593.     AH = A5h
  7594.     CX = length
  7595.     DH = session ID
  7596.     ES:BX -> buffer
  7597. Return: AH = return code
  7598.     CX = number of bytes read
  7599. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  7600. SeeAlso: AX=FF02h
  7601. --------S-14A5-------------------------------
  7602. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  7603.     AH = A5h
  7604.     AL = session number
  7605. Return: ???
  7606. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  7607. --------S-14A6-------------------------------
  7608. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  7609.     AH = A6h
  7610.     DH = session ID
  7611. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  7612. --------S-14A6-------------------------------
  7613. INT 14 - Interconnections Inc. TES - DROP A SESSION
  7614.     AH = A6h
  7615.     AL = session number
  7616. Return: AH = status
  7617.         00h successful
  7618.         else error
  7619. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7620. --------S-14A7-------------------------------
  7621. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  7622.     AH = A7h
  7623.     DH = session ID
  7624. Return: AH = return code
  7625.     CX = number of bytes available
  7626. --------S-14A7-------------------------------
  7627. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  7628.     AH = A7h
  7629.     ???
  7630. Return: ???
  7631. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7632. --------S-14A8-------------------------------
  7633. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  7634.     AH = A8h
  7635.     AL = 00h no visible response
  7636.     ES:SI -> ASCIZ command
  7637. Return: ???
  7638. --------S-14AF00BXAAAA-----------------------
  7639. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  7640.     AX = AF00h
  7641.     BX = AAAAh
  7642. Return: AX = AF01h if installed
  7643.         BH = protocol type
  7644.         BL = version
  7645. SeeAlso: AH=A0h"BAPI"
  7646. --------S-14B0-------------------------------
  7647. INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
  7648.     AH = B0h
  7649.     AL = 00h disable
  7650.        = 01h enable
  7651. Return: AH = return code
  7652. SeeAlso: AH=AF00h"BAPI",AH=B1h
  7653. --------S-14B1-------------------------------
  7654. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  7655.     AH = B1h
  7656. Return: AH = return code
  7657. SeeAlso: AH=B0h
  7658. --------a-14F0F0-----------------------------
  7659. INT 14 - ASAP v1.0 - ???
  7660.     AX = F0F0h
  7661.     DX = ???
  7662.     ???
  7663. Return: ???
  7664. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  7665.       MicroTalk
  7666. SeeAlso: AX=F0F1h
  7667. --------a-14F0F1DX0000-----------------------
  7668. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  7669.     AX = F0F1h
  7670.     DX = 0000h
  7671. Return: DX = segment of resident code
  7672.        = 0000h if not installed
  7673. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  7674.       MicroTalk
  7675. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  7676. --------S-14F4FF-----------------------------
  7677. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  7678.     AX = F4FFh
  7679.     DX = port (00h-03h)
  7680. Return: CF clear if present
  7681.         AX = 0000h
  7682.     CF set if not present
  7683.         AX <> 0000h
  7684. --------S-14F9-------------------------------
  7685. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  7686.     AH = F9h
  7687.     DX = port (00h-03h)
  7688. --------S-14FA-------------------------------
  7689. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  7690.     AH = FAh
  7691.     DX = port (00h-03h)
  7692. SeeAlso: AH=1Ah,AH=8Ah
  7693. --------S-14FB-------------------------------
  7694. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  7695.     AH = FBh
  7696.     AL = modem control register (see AH=05h)
  7697.     DX = port (00h-03h)
  7698. SeeAlso: AH=05h"SERIAL"
  7699. --------S-14FC-------------------------------
  7700. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  7701.     AH = FCh
  7702.     DX = port (00h-03h)
  7703. Return: AH = RS232 status bits (see AH=00h)
  7704.     AL = character
  7705. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  7706. --------S-14FD02-----------------------------
  7707. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  7708.     AX = FD02h
  7709. Return: CX = number of characters available
  7710. --------S-14FF02-----------------------------
  7711. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  7712.     AX = FF02h
  7713.     CX = length
  7714.     DX = port (00h-03h)
  7715.     ES:BX -> buffer
  7716. Return: CX = number of characters read
  7717. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
  7718. ---------------------------------------------
  7719.